Собственно что такое массив? Для новичка проще всего представить массив таблицей, в одном столбце которой ключи, а в другом значение. Зная ключ мы можем получить значение. Ну или наоборот, если очень надо) Но давайте не будем спешить. Итак таблица:
| Ключ | Значение |
| yellow | банан |
| green | яблоко |
| red | Томат |
Так, я думаю, понятнее. Этот массив ассоциативный, т.е. ключами являются не цифры, а слова, в данном случае цвета на английском. Так же хочу заметить что настоятельно не рекомендуется ключами массива делать русские символы, т.е. слова содержащие их, ибо в дальнейшем при работе сценария может вылезти какая-нибудь непонятная фигня)
Ну, это запись простая понятная для нас с вами, а как же это записать в php? Есть несколько вариантов:
<?php $array = array( 'yellow'=>'банан', 'green'=>'яблоко', 'red'=>'томат'); //или $array['yellow'] = 'банан'; $array['green'] = 'яблоко'; $array['red'] = 'томат'; ?> |
Оба варианта написания являются абсолютно правильными. Но, согласитесь, первый покороче.
Итак, что такое массивы мы разобрались, теперь надо понять как же с ними работать. Прежде всего надо помнить что такие команды как echo или print выводят только строки и при попытке посмотреть «в массив» они нам выведут просто слово array. Что ж, значит надо использовать какие-то другие операторы. Для данных целей нам подойдут print_r и var_dump.
Оба оператора выводят список ключей и значений массива, но var_dump дает более полную информацию, такую как тип данных в массиве и, например если это строка, её длину. Попробуйте сделать вот так:
<?php $array = array( 'yellow'=>'банан', 'green'=>'яблоко', 'red'=>'томат'); echo '<pre>'; print_r($array); echo '<br/>'; var_dump($array); echo '</pre>'; ?> |
Данные сведения вам очень помогут при отладке скрипта.
Ну, отладка это конечно хорошо,-скажете вы,-но ведь надо еще сначала и сам сценарий написать.
Полностью с вами согласен, пожалуй «русской кувалдой» для массивов является цикл foreach. О целесообразности его применения на данном этапе говорить не буду, ибо часто при помощи каких либо других операторов можно получить тот же результат гораздо быстрее (быстрее в плане выполнения самого скрипта).
Часто требуется отсортировать массив под свои требования, для этого хорошо помогает функция *sort, точнее это даже не одна, а целое семейство функций:
rsort — Сортирует массив в обратном порядке
sort — Сортирует массив в порядке позрастания элементов
ksort — Сортирует массив по ключам
krsort — Сортирует массив по ключам в обратном порядке
arsort — Сортирует массив в обратном порядке, сохраняя ключи
asort — Сортирует массив, сохраняя ключи
uasort — Сортирует массив, используя пользовательскую функцию для сравнения элементов с сохранением ключей
uksort — Сортирует массив по ключам, используя пользовательскую функцию для сравнения ключей
usort — Сортирует массив по значениям используя пользовательскую функцию для сравнения элементов.
Приведу примеры работы с несколькими из этих функций:
<?php $array = array( 'yellow'=>'банан', 'green'=>'яблоко', 'red'=>'томат'); ksort($array); print_r($array); /* Вернет Array ( [green] => яблоко [red] => томат [yellow] => банан ) */ ?> |
Массив отсортирован по ключам. Теперь посмотрим вот это
<? $array = array( 'yellow'=>'банан', 'green'=>'яблоко', 'red'=>'томат'); rsort($array); print_r($array); /* Вернет Array ( [0] => томат [1] => яблоко [2] => банан ) т.е массив отсортирован в обратном порядке по отношению к тому как он был и ключи массива потеряны. */ ?> |
Как видите здесь все весьма просто. Если вам что то не понятно рекомендую обратиться к оффициальному мануалу, там все это весьма подробно описано, здесь же я лишь кратко привел список того что вам может понадобится.
Кроме того очень часто требуется определить существует ли какой то элемент в массиве. Ну на самом деле не перебирать же из-за этого весь массив. В таких случаях следует использовать функцию in_array:
<?php $array = array( 'yellow'=>'банан', 'green'=>'яблоко', 'red'=>'томат'); if(in_array('томат',$array)) echo 'Такой элемент присутствует в массиве!'; ?> |
Так же в своей практике часто встречалсяс тем что надо проверить существует ли ключ в массиве. Это делается при помощи array_key_exists:
<?php $array = array( 'yellow'=>'банан', 'green'=>'яблоко', 'red'=>'томат'); if(array_key_exists('red',$array)) echo 'Такой элемент присутствует в массиве!'; else echo 'Такого элемента нет'; ?> |
Так же часто бывает нужно слить два массива в таких случаях надо использовать array_merge
<?php $array = array( 'yellow'=>'банан', 'green'=>'яблоко', 'red'=>'томат'); $array2 = array('new','array'); $array3 = array_merge($array,$array2); print_r($array3); /* Вернет Array ( [yellow] => банан [green] => яблоко [red] => томат [0] => new [1] => array ) */
?> |
Так же нужно бывает подсчитать количество элементов массива, для этого подойдет функция count
<?php $array = array( 'yellow'=>'банан', 'green'=>'яблоко', 'red'=>'томат'); print count($array); //вернет 3 ?> |
Ну вот собственно и все что я хотел описать, данными функциями при работе с массивами я пользуюсь наиболее часто. Как всегда хочу попросить чтобы вы не забывали читать мануал, на время обучение это должно стать для вас библией. Так же буду рад любой критике или вопросам:)