Работа с ключами массива и их значениями. Массивы в PHP Меняем местами ключи и значения

array_flip

Меняет местами индексы и значения массива.
Синтаксис:

Array array_flip(array arr)

Эта функция "пробегает" по массиву и меняет местами его ключи и значения. Исходный массив arr не изменяется, а результирующий массив просто возвращается. Если в массиве присутствовало несколько элементов с одинаковыми значениями, учитываться будет только последний из них.

Значения массива arr должны быть либо целыми числами, либо строковыми значениями. Иначе пара ключ / значение не будут обработаны.

Функция array_flip() возвратит FALSE, если обработка массива вызвала ошибку.

$trans = array_flip ($trans);
$original = strtr ($str, $trans);

Пример использования функции array_flip():

Многократное повторение значения
1, "b" => 1, "c" => 2);
$trans = array_flip ($trans);
print_r($trans);

Array(
=> b
=> c
)

array_change_key_case

Функция устанавливает значения ключей массива в верхний или нижний регистр.
Синтаксис:

Array array_change_key_case(array arr[, int registr])

Функция array_change_key_case() возвращает исходный массив arr, ключи которого преобразованы в верхний или нижний регистр.
Необязательный параметр registr может принимать следующие значения:
CASE_LOWER - все ключи массива преобразуются в нижний регистр (значение по умолчанию);
CASE_UPPER - в верхний регистр.
Данная функция не изменяет ключи, состоящие из чисел.
Пример использования функции array_change_key_case():

$array = array("FirSt" => 1, "SecOnd" => 4);
print_r(array_change_key_case($array, CASE_UPPER));
print_r(array_change_key_case($array, CASE_LOWER));

Пример выведет следующее:

Array(
=> 1
=> 2
Array(
=> 1
=> 2
)

Функция поддерживается PHP 4 >= 4.2.0, PHP 5

array_combine

Функция объединяет два массива, причем значения первого становяться ключами, а значения второго - значениями.
Синтаксис:

Array array_combine(array keys, array values)

Функция array_combine() возвращает массив, ключами которого являются значения массива keys, а значениями - значения массива values.
Функция возвратит FALSE, если размерность массивов keys и values не совпадают, или эти массивы не содержат значений.
Пример использования функции array_combine():

$b = array("avocado", "apple", "banana");
$c = array_combine($a, $b);

print_r($c);
?>

Пример выведет следующее:

Array(
=> avocado
=> apple
=> banana
)

Функция поддерживается PHP 5

array_key_exists

Проверка существования заданного ключа в массиве.
Синтаксис:

Bool array_key_exists(mixed key, array search)

Функция array_key_exists() возвратит TRUE, если в массиве search присутствует элемент с индексом key.
В противном случае возвратит FALSE.

Пример использования функции array_key_exists():

1, "second" => 4);
if (array_key_exists("first", $search_array)) {
echo "The first element is in the array";
}
?>

В PHP 4.0.6. имя этой функции key_exists().

Функция поддерживается PHP 4 >= 4.0.1, PHP 5

array_product()

Вычислить произведение значений массива (PHP 5 >= 5.1.0RC1)

Описание:

Number array_product (array array)

array_product() возвращает произведение значений массива как целое число или число с плавающей точкой.

Пример использования array_product()

$a = array(2, 4, 6, 8);
echo "product(a) = " . array_product($a) . "\n";

Результат выполнения данного примера:

Product(a) = 384

array_reduce()

Итеративно уменьшить массив к единственному значению, используя функцию обратного вызова (PHP 4 >= 4.0.5, PHP 5)

Описание:

Mixed array_reduce (array input, callback function [, int initial])

array_reduce() итеративно применяет функцию function к элементам массива input и, таким образом, сводит массив к единственному значению. Если указан дополнительный параметр initial, он будет использован в начале процесса, или в качестве окончательного результата, если массив пуст.

Пример использованияarray_reduce()

function rsum($v, $w)
{
$v += $w;
return $v;
}

function rmul($v, $w)
{
$v *= $w;
return $v;
}

$a = array(1, 2, 3, 4, 5);
$x = array();
$b = array_reduce($a, "rsum");
$c = array_reduce($a, "rmul", 10);
$d = array_reduce($x, "rsum", 1);
?>

В результате переменная $b содержит 15, $c содержит 1200 (= 1*2*3*4*5*10), и $d содержит 1.

array_walk_recursive()

Рекурсивно применить пользовательскую функцию к каждому элементу массива (PHP 5)

Описание:

Bool array_walk_recursive (array &input, callback funcname [, mixed userdata])

Применяет пользовательскую функцию funcname к каждому элементу массива input. Эта функция обрабатывает каждый элемент многомерного массива. Обычно у функции funcname два параметра. Значение массива array в качестве первого параметра, и ключ/индекс в качестве второго. Если указан дополнительный параметр userdata, он будет передан в качестве третьего параметра в функцию обратного вызова funcname.

Возвращает TRUE в случае успешного завершения или FALSE в случае возникновения ошибки.

Замечание : Если требуется, чтобы функция funcname изменила значения в массиве, определите первый параметр funcname как ссылку. Тогда все изменения будут применены к элементам массива.

Пример использования array_walk_recursive()

$sweet = array("a" => "apple", "b" => "banana");
$fruits = array("sweet" => $sweet, "sour" => "lemon");

function test_print($item, $key)
{
echo "$key holds $item\n";
}

array_walk_recursive($fruits, "test_print");
?>

Вывод вышеприведённой программы:

A holds apple
b holds banana
sour holds lemon

Обратите внимание, что ключ "sweet" никогда не отображается. Никакой ключ, соответствующий значению типа array, не будет передан в функцию.

array_keys

Возвращает список из ключей массива.
Синтаксис:

Array array_keys(array arr [,mixed search_value])

Функция возвращает массив, значениями которого являются все строковые и числовые ключи массива arr. Если задан необязательный параметр search_value, то она вернет только те ключи, которым соответствуют значению search_value.
Пример испольльзования функции array_keys():

100, "color" => "red", 15);
print_r(array_keys($arr));

$arr = array("blue", "red", "green", "blue", "blue");
print_r(array_keys($arr, "blue"));

$array = array ("color" => array("blue", "red", "green"), "size" => array("small", "medium", "large"));
print_r(array_keys ($array));
?>

Приведенный выше пример выведет следующее:

Array(
=> 0
=> color
Array(
=> 0
=> 3
=> 4
Array(
=> color
=> size
)

Функция array_keys() появилась в PHP 4.

Ее эквивалент для PHP 3:

Function array_keys ($arr, $term="") {
$t = array();
while (list($k,$v) = each($arr)) {
if ($term && $v != $term) {
continue;
}
$t = $k;
}
return $t;
}

Функция поддерживается PHP 4, PHP 5

array_values

Удаление ассоциативных индексов массива.
Синтаксис:

Array array_values(array arr)

Функция array_values() возвращает список всех значений в ассоциативном массиве arr. При этом она заменяет все строковые ключи на числовые.
Пример использования функции array_values():

$arr = array("size" => "XL", "color" => "gold");
print_r(array_values($arr));

Этот пример выведет:

Array(
=> XL
=> gold
)

Функция поддерживается PHP 4, PHP 5

in_array

Осуществляет проверку массива на наличие значения.
Синтаксис:

Bool in_array (mixed needle, array haystack [, bool strict])

Функция in_array() возвратит TRUE, если в массиве haystack содержится элемент со значением needle, и FALSE в противном случае.
Если установить третий необязательный параметр strict в значение TRUE, то функция in_array() при проверке также будет сравнивать типы значений.
Замечание: Если параметр needle является строкой, то при сравнении регистр символов учитывается.
Замечание: В PHP версии ниже 4.2.0 параметр needle не мог быть массивом.
Пример использования функции in_array():

if (in_array("Irix", $os)) {
echo "Got Irix";
}
if (in_array("mac", $os)) {
echo "Got mac";
}
?>

Второе условие не сработает, т.к. поиск в массиве идет с учетом регистра.
Пример выведет:

Got Irix

Пример использования функции in_array(): Использование параметра strict

if (in_array(array("p", "h"), $a)) {
echo "ph was foundn";
}

if (in_array(array("f", "i"), $a)) {
echo "fi was foundn";
}

if (in_array("o", $a)) {
echo "o was foundn";
}
?>

Пример выведет:

Ph was found
o was found

Функция поддерживается PHP 4, PHP 5

array_count_values

Возвращает количество значений массива.
Синтаксис:

Array array_count_values(array arr)

Эта функция подсчитывает, сколько раз каждое значение встречается в массиве arr, и возвращает ассоциативный массив с ключами -
элементами массива и значениями - количеством повторов этих элементов. Иными словами, функция array_count_values()
подсчитывает частоту появления значений в массиве arr.
Пример использования функции array_count_values():

$arr = array(1, "hello", 1, "world", "hello");
print_r(array_count_values($arr));

Пример выведет следующее:

Array(
=> 2
=> 2
=> 1
)

Функция поддерживается PHP 4, PHP 5

Возвращает число элементов массива.
Синтаксис:

Int sizeof(array arr)

Функция sizeof() возвращает количество элементов в массиве arr на подобие действия функции count().

Возвращает число элементов в массиве или объекте.
Синтаксис:

Int count(mixed var [, int mode])

Функция count() возвращает число элементов в массиве или объекте var. В случае, если var - скалярная переменная, то функция возвращает 1, если такая переменная существует, или 0, если такой переменной нет.
Надо отметить, что 0 возвращается и тогда, когда указан массив, не содержащий элементов (NULL).

Если задан необязательный параметр mode, то будет подсчитано общее количество элементов в массиве. Это может быть полезно при нахождении количества элементов в многомерных массивах.
Пример использования функции count():

$a = 3;
$a = 5;
$result = count($a);
// $result == 3

$b = 7;
$b = 9;
$b = 11;
$result = count($b);
// $result == 3;
?>

Пример использования функции count(): (PHP >= 4.2.0)

array("orange", "banana", "apple"),
"veggie" => array("carrot", "collard", "pea"));

// recursive countecho count($food, COUNT_RECURSIVE); // выведет 8

// normal countecho count($food); // выведет 2
?>

Функция поддерживается PHP 3, PHP 4, PHP 5

array_sum

Возвращает сумму всех элементов массива.
Синтаксис:

Mixed array_sum(array arr)

Функция array_sum() возвращает сумму всех числовых элементов массива. От типа значений в массиве зависит тип возвращаемого числа (integer или float).

Пример использования функции array_sum():

echo "sum(a) = " . array_sum($a) . "
";

$b = array("a" => 1.2, "b" => 2.3, "c" => 3.4);
echo "sum(b) = " . array_sum($b) . "
";
?>

Этот пример выведет следующее:

Sum(a) = 20
sum(b) = 6.9

Функция поддерживается PHP 4 >=4.0.4, PHP 5

array_rand

Производит случайную выборку индексов массива.
Синтаксис:

Mixed array_rand(array arr [, int num_req])

Функция array_rand() будет полезной, если вы хотите выбрать одно или несколько случайных значений из массива. Эта функция возвращает в массиве выбранные случайным образом индексы элементов массива arr.
Аргумент num_req указывает число возвращаемых индексов. В случае, если выбирается один элемент, то функция array_rand() возвратит случайный ключ в виде значения.
Пример использования функции array_rand():

// здесь мы проинициализировали генератор случайных чисел
//$arr = array("Neo", "Morpheus", "Trinity", "Cypher", "Tank");
$rand_keys = array_rand($arr, 2);
echo $arr[$rand_keys]."
";
echo $arr[$rand_keys]."
";
?>

Функция поддерживается PHP 4, PHP 5

arrays (13)

Начиная с PHP7.3 вы можете напрямую обращаться к последнему ключу (внешнему уровню) массива с помощью

Это означает, что вы можете получить значение конечного ключа без:

  1. перемещение указателя массива (для которого требуются две строки кода) или
  2. сортировка, реверсирование, выскакивание, подсчет, индексирование массива ключей или любого другого дурачества

Эта функция была долгожданной и приветливым дополнением к поясу инструмента функции массива, который повышает производительность, избегает нежелательных побочных эффектов и обеспечивает чистый / прямой / интуитивно понятный код.

$array = ["a" => "one", "b" => "two", "c" => "three"]; if (!function_exists("array_key_last")) { echo "please upgrade to php7.3"; } else { echo "First Key: " , key($array) , "\n"; echo "Last Key: " , array_key_last($array) , "\n"; next($array); // move array pointer to second element echo "Second Key: " , key($array) , "\n"; echo "Still Last Key: " , array_key_last($array); }

First Key: a Last Key: c // <-- unaffected by the pointer position, NICE! Second Key: b Last Key: c // <-- unaffected by the pointer position, NICE!

Некоторые примечания:

  • array_key_last() - это функция sibling для array_key_first() .
  • Обе эти функции являются «неосведомленными указателями».
  • Обе функции возвращают значение null если массив пуст.
  • Отброшенные функции брата (array_value_first() и array_value_last()) также предложили бы неосведомленный указателем доступ к элементам bookend, но они, очевидно, не смогли собрать достаточное количество голосов, чтобы ожить.

Вот некоторые релевантные страницы, посвященные новым функциям:

Как я могу получить последний ключ массива?

Решением было бы использовать комбинацию end и key (цитирования) :

  • end() продвигает внутренний указатель массива к последнему элементу и возвращает его значение.
  • key() возвращает индексный элемент текущей позиции массива.

Таким образом, часть кода, такая как эта, должна делать трюк:

$array = array("first" => 123, "second" => 456, "last" => 789,); end($array); // move the internal pointer to the end of the array $key = key($array); // fetches the key of the element pointed to by the internal pointer var_dump($key);

String "last" (length=4)

т.е. ключ последнего элемента моего массива.

После этого внутренний указатель массива будет находиться в конце массива. Как указано в комментариях, вы можете запустить reset() в массиве, чтобы вернуть указатель в начало массива.

Попробуйте использовать функции array_pop и array_keys следующим образом:

1, "two" => 2, "three" => 3); echo array_pop(array_keys($array)); // prints three ?>

Просто используйте: echo $array;

Вы можете использовать это:

$array = array("one" => "apple", "two" => "orange", "three" => "pear"); end($array); echo key($array);

Другое решение - создать функцию и использовать ее:

Function endKey($array){ end($array); return key($array); } $array = array("one" => "apple", "two" => "orange", "three" => "pear"); echo endKey($array);

Не знаю, будет ли это быстрее или нет, но это проще сделать так, и вы избегаете ошибки, не передавая функции end () ...

ему просто нужна переменная... не большая проблема, чтобы написать еще одну строку кода, а затем отключить ее, если вам нужно.

$array = array("first" => 123, "second" => 456, "last" => 789,); $keys = array_keys($array); $last = end($keys);

Хотя end() кажется самым простым, это не самый быстрый.

Более быстрая и более сильная альтернатива - array_slice()

Забастовка редактора: эта претензия не была подтверждена, и в комментариях были упомянуты противоположные доказательства. Если в утверждениях этого плаката относительно скорости / эффективности есть какая-то доля правды, тогда необходимо провести контрольный тест.

$last_key = key(array_slice($array, -1, 1, TRUE));

$arr = array("key1"=>"value1","key2"=>"value2","key3"=>"value3"); list($last_key) = each(array_reverse($arr)); print $last_key; // key3

Начиная с PHP 7.3 (2018) для этого существует (наконец) функция: http://php.net/manual/en/function.array-key-last.php

$array = ["apple"=>10,"grape"=>15,"orange"=>20]; echo array_key_last ($array)

я предпочитаю

End(array_keys($myarr))

Я также хотел бы предложить альтернативное решение этой проблемы.

Предполагая, что все ваши ключи являются числовыми без каких-либо пробелов, моим предпочтительным методом является подсчет массива, а затем минус 1 из этого значения (для учета того факта, что ключи массива начинаются с 0.

$array = array(0=>"dog", 1=>"cat"); $lastKey = count($array)-1; $lastKeyValue = $array[$lastKey]; var_dump($lastKey); print_r($lastKeyValue);

Это даст вам:

Другой способ (хотя по существу эквивалентен new ArrayList(Arrays.asList(array)) решению new ArrayList(Arrays.asList(array)) :

Collections.addAll(arraylist, array);

Ассоциативный массив – незаменимый тип данных, используемый для описания совокупности уникальных ключей и ассоциативных значений, – является базовым элементом всех языков программирования, включая PHP. По существу, ассоциативные массивы играют такую важную роль в веб-программировании, что в PHP включена поддержка множества функций и свойств, способных управлять массивами данных всеми мыслимыми способами. Такая обширная поддержка может оказаться чересчур громоздкой для разработчиков, ищущих наиболее эффективные способы управления массивами в своих приложениях. В этой статье я приведу 10 подсказок, которые помогут вам резать, кромсать и шинковать ваши данные бесконечным числом способов.

1. Добавление элементов массива.

PHP – слабо типизированный язык, т. е. в нем не надо детально описывать ни массив, ни его размер. Вместо этого массив можно одновременно объявить и наполнить:

$capitals = array("Alabama" => "Montgomery", "Alaska" => "Juneau", "Arizona" => "Phoenix");

Дополнительные элементы массива могут присоединяться следующим способом:

$capitals["Arkansas"] = "Little Rock";

Если вы работаете с массивами, пронумерованными числами, и предпочли бы присоединять элементы (в начало массива) и прикреплять элементы, используя детально-названную функцию, рассмотрите array_push() и array_unshift() функции (эти функции не работают с ассоциативными массивами).

2. Удаление элементов массива

Чтобы удалить элемент из массива, воспользуйтесь unset() функцией:

Unset($capitals["California"]);

Работая с массивами, пронумерованными числами, вы получаете больше свободы в том, что касается удаления элементов массива. Т. е. вы можете воспользоваться функциями array_shitt() и array_pop() , чтобы удалить элемент с начала и с конца массива соответственно.

3. Меняем местами ключи и значения

Предположим, что вы захотели создать новый массив с именем $states , столицы штатов в котором будут индексами, а сами штаты – ассоциативными значениями. Данная задача (меняем местами ключи и значения) легко решается с помощью array_flip() функции:

$capitals = array("Alabama" => "Montgomery", "Alaska" => "Juneau", "Arizona" => "Phoenix"); $states = array_flip($capitals); // $states = array(// "Montgomery" => string "Alabama", // "Juneau" => string "Alaska", // "Phoenix" => string "Arizona" //);

4. Слияние массивов

Предположим, что предыдущий массив использовался в сочетании с основанным на web-технологиях "flash card" (flashcard - карточка с текстом и картинкой (используется при обучении иностранному языку)) сервисом и вы захотели дать возможность студентам проверить их знания не только о мировых столицах, но и столицах соединенных штатов. Можно соединить массив (со столицами штатов) с массивом (с мировыми столицами) использую array_merge() функцию:

$stateCapitals = array("Alabama" => "Montgomery", "Alaska" => "Juneau", "Arizona" => "Phoenix"); $countryCapitals = array ("Australia" => "Canberra", "Austria" => "Vienna", "Algeria" => "Algiers"); $capitals = array_merge($stateCapitals, $countryCapitals);

5. Редактирование значений массивов

Предположим, что найденные в массиве данные могут содержать ошибки связанные с употреблением заглавных букв, а вы хотите исправить эти ошибки, прежде чем вносить данные в базу данных. В этом случае можно воспользоваться array_map() функцией, чтобы применить callback-функцию к каждому элементу массива:

Function capitalize($element) { $element = strtolower($element); // Переводим все буквы в нижний регистр return ucwords($element); // Преобразуем в верхний регистр первый символ каждого слова в строке } $capitals = array("Alabama" => "montGoMEry", "Alaska" => "Juneau", "Arizona" => "phoeniX"); $capitals = array_map("capitalize", $capitals);

6. Сортируем массивы по ключам

Флэшкард приложения (flashcard - карточка с текстом и картинкой (используется при обучении иностранному языку)) прибегают к различным техникам обучения, включая сортировку карточек определенными способами, к примеру, по алфавиту. Можно сортировать ассоциативные массивы по ключам, используя ksort() функцию:

$capitals = array("Arizona" => "Phoenix", "Alaska" => "Juneau", "Alabama" => "Montgomery"); ksort($capitals);

7. Рандомизация порядка массива

Перемешать элементы в случайном порядке можно при помощи функции shuffle() :

$capitals = array("Arizona" => "Phoenix", "Alaska" => "Juneau", "Alabama" => "Montgomery"); shuffle($capitals); foreach ($capitals as $k=>$v) echo "$k: $v
";

Результат:

Обратите внимание, на выходе мы получаем не ассоциативный массив, а числовой массив .

Если вместо рандомизации массива вы хотите наугад выбрать значение, воспользуйтесь array_rand() функцией.

8. Определяем, существуют ли ключи и значения

Можно воспользоваться in_array() функцией, чтобы определить, существуют ли элементы массива:

$capitals = array("Arizona" => "Phoenix", "Alaska" => "Juneau", "Alabama" => "Montgomery"); if (in_array("Juneau", $capitals)) { echo "Exists!"; } else { echo "Does not exist!"; }

Возможность определить: существуют ли ключи массива, менее известна. Реализуется же она с помощью array_key_exists() функции:

$capitals = array("Arizona" => "Phoenix", "Alaska" => "Juneau", "Alabama" => "Montgomery"); if (array_key_exists("Alaska", $capitals)) { echo "Key exists!"; } else { echo "Key does not exist!"; }

9. Ищем массив

Возможно, вы захотите снабдить флэшкард ресурс поиском, чтобы пользователи легко могли найти штат, которой связан с определенной столицей. Это можно осуществить с помощью функции array_search() (эта функция ищет в массиве заданное значение и возвращает соответствующий ключ):

$capitals = array("Arizona" => "Phoenix", "Alaska" => "Juneau", "Alabama" => "Montgomery"); $state = array_search("Juneau", $capitals); // $state = "Alaska"

10. Стандартная PHP библиотека

Стандартная PHP библиотека (SPL) снабжает разработчиков порядочным числом структур данных, интерфейсов, исключений и других свойств, которыми раньше язык PHP похвастаться не мог. Среди этих свойств есть возможность итерации (повторения) массива с помощью объекто-оринетированного синтаксиса.

$capitals = array("Arizona" => "Phoenix", "Alaska" => "Juneau", "Alabama" => "Montgomery"); $arrayObject = new ArrayObject($capitals); foreach ($arrayObject as $state => $capital) { printf("The capital of %s is %s
", $state, $capital); } // The capital of Arizona is Phoenix // The capital of Alaska is Juneau // The capital of Alabama is Montgomery

Это только одно из классных свойств, включенных в SPL. Для получения большей информации ознакомьтесь с PHP документацией.

Последнее обновление: 1.11.2015

Массивы предназначены для хранения наборов данных или элементов. Каждый элемент в массиве имеет свой уникальный ключ и значение. Итак, сохраним в массив список моделей телефонов:

"; ?>

Здесь создается массив $phones из четыре элементов. Каждый элемент в массиве представляет собой пару ключ - значение . Так, первый элемент $phones = "Nokia N9" имеет ключ - число 0, а значение - строку "Nokia N9". В таких массивах числовые ключи еще называются индексами.

С помощью функции count() можно узнать количество элементов в массиве. А благодаря тому, что ключи идут по порядку от 0 до 3, и зная размер массива, можно вывести элементы массивы в цикле for .

Чтобы было более понятно отношения ключей и значений элементов, выведем массив с помощью функции print_r :

Print_r($phones);

У нас получится следующий вывод:

Array ( => Nokia N9 => Samsung Galaxy ACE II => Sony Xperia Z3 => Samsung Galaxy III)

Данное создание массива будет также эквивалентно следующему:

"; ?>

Если не указывается ключ элемента, то PHP в качестве ключей использует числа. При этом нумерация ключей начинается с нуля, а каждый новый ключ увеличивается на единицу.

Зная ключ элемента в массиве, мы можем обратиться к этому элементу, получить или изменить его значение:

// получим элемент по ключу 1 $myPhone = $phones; echo "$myPhone
"; // присвоение нового значения $phones = "Samsung X650"; echo "$phones
";

Но в качестве ключей могут использоваться не только целые числа, но и строки:

Подобные массивы еще называют ассоциативными.

Оператор array

Выше был рассмотрен один способ создания массива. Но есть и другой, который предусматривает применение оператора array() .

Оператор array() принимает набор элементов. Здесь также явным образом не указаны ключи. Поэтому PHP автоматически нумерует элементы с нуля. Но мы также можем указать для каждого элемента ключ:

"iPhone5", "samsumg"=>"Samsung Galaxy III", "nokia" => "Nokia N9", "sony" => "Sony XPeria Z3"); echo $phones["samsumg"]; ?>

Операция => позволяет сопоставить ключ с определенным значением.

Перебор ассоциативных массивов

Выше мы посмотрели, как с помощью цикла for вывести все элементы массива, где ключи заданы последовательно числами от 0 до 3. Однако с ассоциативными массивами это не работает. И для них в PHP предназначен специальный тип цикла - foreach...as :

"iPhone5", "samsumg"=>"Samsung Galaxy III", "nokia" => "Nokia N9", "sony" => "Sony XPeria Z3"); foreach($phones as $item) echo "$item
"; ?>

В цикле foreach из массива последовательно извлекаются все элементы и их значение помещается в переменную, указанную после ключевого слова as . В данном случае в переменную $item по очереди помещаются все четыре значения из массива $phones. Когда будет извлечен последний элемент из массива, цикл завершается.

Цикл foreach позволяет извлекать не только значения, но и ключи элементов:

"iPhone5", "samsumg"=>"Samsung Galaxy III", "nokia" => "Nokia N9", "sony" => "Sony XPeria Z3"); foreach($phones as $key=>$value) echo "$key => $value
"; ?>

Здесь при переборе элементов цикла в переменную $key будет передаваться ключ элемента, а в переменную $value ее значение.

Альтернативу циклу foreach представляет использование функций list и each :

"iPhone5", "samsumg"=>"Samsung Galaxy III", "nokia" => "Nokia N9", "sony" => "Sony XPeria Z3"); while (list($key, $value) = each($phones)) echo "$key => $value
"; ?>

Цикл while будет работать, пока функция each не вернет значение false . Функция each проходит по всем элементам массива $phones и получает его в виде массива, в который входят ключ и значение элемента. Затем этот массив передается функции list и проиcходит присваивает значения массива переменным внутри скобок. Когда функция each закончит перебор элементов массива $phones, она возвратит false , и действие цикла while будет завершено.

Многомерные массивы

В предыдущих примерах рассматривались только одномерные массивы, где значения элементов представляли числа, строки. Но в PHP массивы могут также быть многомерными, то есть такими, где элемент массива сам является массивом. Например, создадим многомерный массив:

array("iPhone5", "iPhone5s", "iPhone6") , "samsumg"=>array("Samsung Galaxy III", "Samsung Galaxy ACE II"), "nokia" => array("Nokia N9", "Nokia Lumia 930"), "sony" => array("Sony XPeria Z3", "Xperia Z3 Dual", "Xperia T2 Ultra")); foreach ($phones as $brand => $items) { echo "

$brand

"; echo "
    "; foreach ($items as $key => $value) { echo "
  • $value
  • "; } echo "
"; } ?>

И при выводе мы получим 4 списка:

Чтобы обратиться к элементу данного, также надо указать ключи в квадратных скобках. Например, обратимся к первому элементу в первом массиве. Так как ключ первого массива - "apple", а ключ первого элемента в первом массиве - число 0 (так как мы явным образом не указали ключи):

Echo $phones["apple"];

Подобным образом можно получить второй элемент третьего массива:

Echo $phones["nokia"];

Допустим, вложенные массивы также представляют ассоциативные массивы:

array("apple" => "iPhone5", "samsumg" => "Samsung Galaxy III", "nokia" => "Nokia N9"), "tablets" => array("lenovo" => "Lenovo IdeaTab A3500", "samsung" => "Samsung Galaxy Tab 4", "apple" => "Apple iPad Air")); foreach ($technics as $tovar => $items) { echo "

$tovar

"; echo "
    "; foreach ($items as $key => $value) { echo "
  • $key: $value
  • "; } echo "
"; } // присвоим одному из элементов другое значение $technics["phones"]["nokia"] = "Nokia Lumnia 930"; // выведем это значение echo $technics["phones"]["nokia"]; ?>

Плееры