![]() |
![]() На главную страницу
|
ШЛЕГ (SHLEG), ШЛЁГ (SHLEG, SHLYOG ? SHLJOG ? SHLIOG), ШЕЛЕГ (SHELEG) | ||||||||||
|
презентация сельское хозяйство зарубежной европы;Товарищество реставраторов - дизайн проект. Дизайн студия интерьера. Массивы в PHPЧто такое массивы и как их можно использовать.
$имя_массива[позиция] = данные;
$massiv[0] имеет значение "text"; Но можно записать попроще: $massiv[] = "text"; это запись эквилента предыдущей. т.е. первый массив начинается не с единицы, а с нуля! Но также можно сделать так: $massiv[2] = "text"; $massiv[0] и $massiv[1] будут пусты. Если вы хотите создать массив уже из имеющихся данных, то делают вот что: $massiv = array("text", "mes", "chislo");
Массивы и файлы
$massiv[] = array("Text"); Далее записываем его в файл $file = fopen('file.txt', 'w');
Допустим в другом скрипте мы достаём массив чтобы пополнить: $open = fopen("file.txt", "r");
Вывод массива
print_r($massiv); Также можно вывести массив перебором его элементов: foreach($massiv as $mas) {
$personal[1]; // обращение к ячейке обыкновенного массива;
При обращении к ячейке ассоциативного массива, не обязательно ключ ячейки брать в кавычки или скобки. Но рекомендуется это делать. Массивы в PHP могут иметь любую вложенность измерение, но традиционно используются массивы одно- и двухмерные. Массив может хранить любую информацию -- от простых чисел до сложных структур. Объявить массив просто: var $array1 = array(); // пустой массив
Так объявляют обыкновенный массив. Если же нам надо объявить ассоциативный массив с данными или массив, в котором данные "разбросаны" в далекие друг от друга ячейки, нужно указывать кроме значений ячеек, еще и их ключ (название). Ключ от данных отделяется сочетанием "=>". var $array3 = array(0 => "vova", 11 => "nina", 543 => "olga");
В первом случае мы видим массив имен, присвоенных ячейкам с конкретными номерами (все промежуточные ячейки заявлены пустыми), а во втором -- ячейки с именами имеют вместо нумерации -- фамилии. Чтобы узнать имя Сорокина, нам теперь достаточно спросить массив: echo $array4['sorokin']; В общем, это все, что важно знать об объявлении массивов. Теперь поговорим о том, что мы можем с массивами делать. Разумеется, я не буду останавливаться на том, что в массивах можно хранить данные: читать их, удалять и заменять на новые. Как проверить существование массива?
if(!isset($array_name)) echo "Нет такого массива!"; Как уничтожить массив? unset($array_name); // весь массив
Как проще всего распечатать содержимое массива? echo implode(',',$array_name); где implode -- функция объединения с разделителем. В данном случае, массив выступает в роли списка переменных.
$str="один,два,три";
Теперь каждая переменная содержит свое слово. И распечатать: echo implode(',',list($one, $two, $three)); Можно, конечно, и просто перебрать содержимое массива в цикле while, for или foreach Как изменить размеры массива?
function print_arr($str){
распечатает на экране все элементы массива $arr; Если же вам необходимо произвести преобразование содержимого ячеек и получившиеся данные записать обратно в ячейки, вам придется указать это явно -- дать ссылку на реальный экземпляр ячейки в памяти. Как и в языке C, в PHP это делается добавлением перед переменной амперсанта "&". Скажем, если бы на надо было не просто распечатать содержимое ячеек, как в приведенном примере, а добавить слово "done" после каждого слова и снова распечатать содержимое массива, то пример выглядел бы так: function print_arr(&$str){
а результат так: one two three one - done two - done three - done Вот такая полезная функция, которой редко пользуются.
$result = array_diff ($array1, $array2,$array3,:); Как объединить массивы?
$array3=$array1+$array2; Но! Надо помнить, что сложение массивов игнорирует дубликаты. Если в первом массиве уже есть подобная запись, то она не копируется из второго. При необходимости объединения всех элементов массива, включая повторяющиеся, можно воспользоваться функцией array_merge_recursive. Как выстроить ячейки массива в обратном порядке (обернуть масссив)?
$arr=array_reverse($arr); Но эта функция не слишком быстра на больших массивах. Для сортировки большого массива больше подходит вариант с циклом for: for($i=count($arr)-1; $i>=0; $i—) {
т.е. обходим массив $arr от конца к началу и записываем данные в новый массив, начиная с нулевой ячейки. Этот вариант работает быстрее, но кушает память во время выполнения, об этом тоже не стоит забывать.
$first_name=$person[1];
а можно воспользоваться функцией array_slice совместно с хорошо известной нам функцией list. list($first_name,$last_name,$fax)=array_slice($person,1,2,14); Может быть вам покажется, что функция array_slice и не самая полезная, но, поверьте, бывают случаи, когда она очень удобна. Например, когда надо из большого массива выделить выборочные данные в маленький массив. $basket=array_slice($shop,4,6,12,18,22); Как найти элементы, удовлетворяющие определенному условию?
foreach($arr as $k => $v) {
Этот цикл нарисует вам все содержимое ассоциативного массива в столбик. Кстати, этот метод вполне приемлем и для числовой индексации массивов, но он работает медленнее, чем цикл for, поэтому, использовать его следует по прямому назначению.
sort() — сортирует массив самым, что ни на есть, традиционным способом. В качестве дополнительного параметра сортировки можно указать: сортировку обыкновенную, сортировку числовую и сортировку строковую. asort() — используется для сортировки ассоциативных массивов. arsort() и rsort() — сортируют массив в обратно порядке, с той лишь разницей, что arsort сортирует массивы ассоциативные, а asort сортирует массивы с числовой индексацией. ksort() и krsort() — сортируют ассоциативные массивы по ключам, что бывает очень важно. Первая функция сортирует в прямом, а вторая — в обратном порядке. natsort() — не менее полезная сортировка, осуществляющая упорядочивание элементов массива в "натуральном", жизненно-очевидном порядке. Покажу на примере из учебника PHP — сразу станет все понятно: Standard sorting
natcasesort() — делает то же самое, но не обращая внимания на регистр букв. usort() и uksort() — функции сортировки по правилам, определяемым пользователем. Я не буду подробно останавливаться на этом виде сортировки. Так как используют ее крайне редко. Если доведется, посмотрим эту функцию на "живом" примере. Разобравшись со стандартными массивами, перейдем к ознакомлению с особенностями массивов ассоциативных. Как вы уже знаете, ассоциативный массив отличается от массива с числовой индексацией только тем, что в качестве индекса используются цепочки символов и букв. В любом их сочетании. И первый вывод, который сам напрашивается -- любая операция, проводимая над ассоциативным массивом, может быть с таким же успехом проведена над массивом с числовой индексацией. Но не всегда работает обратно правило, поэтому пройдемся по функциям, полезным для работы с ассоциативными массивами. Если в обыкновенных массивах мы чаще всего работаем с данными, используя ключи индексации только в качестве идентификатора ячейки, то в ассоциативных массивах имена ячеек и их содержимое достаточно часто используются наравне -- как хранилище данных. Для простоты даже можно представить себе, что ассоциативный массив -- это обыкновенный двумерный массив, где в одном измерении содержится ключ ассоциативного массива, а в другом -- данные. Как проверить существование ключа в ассоциативном массиве?
if(isset($arr['test']) echo "Ячейка с именем 'test' -- существует"; Но эта функция только сообщит нам: выделено ли место в памяти под ячейку с таким именем или нет. И ответ будет положительным даже если ячейка будет содержать 0 или NULL. Если же вы хостите знать, не пуста ли ячейка, воспользуйтесь функцией empty().
$arr['test']='';
Если же вы задумали удалить ячейку вообще, т.е. удалить ее из памяти, можно воспользоваться функцией деструкции переменной unset(): unset(arr['test']); Как выяснить, содержится ли в массиве какое-то конкретное значение?
if(in_array('искомое значение',$arr)) :; Функция in_array попросту производит поиск в массиве и возвращает TRUE, если значение найдено или FALSE в противном случае. Однако, есть интересная и важная тонкость в таком поиске. Система автоматического приведения типов в PHP может сыграть с вами злую шутку. Что, если вы ищите число 12345 в массиве, где есть строка "012345"? PHP решит, что это значение вам вполне подходит, так как можно спокойно отбросить незначащий ноль в числе 012345. Чтобы подобного избежать, в четвертой версии PHP в функцию in_array добавлен третий параметр, определяющий: стоит ли производить поиск с учетом разных типов или нет.
$man=$arr['director']; // выясняется, что это Иванов Но с такой же легкостью вам может понадобиться узнать название должности по фамилии сотрудника. И эту задачу можно свести к предыдущей, если...
С использованием книги Хьюгса Стерлинга "PHP 4.0. Руководство разработчика". |