PHP поиск значения в массиве

Массивы

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

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

<?php $phones = «Nokia N9»; $phones = «Samsung Galaxy ACE II»; $phones = «Sony Xperia Z3»; $phones = «Samsung Galaxy III»; for($i=0;$i<count($phones);$i++) echo «$phones <br />»; ?>

Здесь создается массив $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 $phones = «Nokia N9»; $phones = «Samsung Galaxy ACE II»; $phones = «Sony Xperia Z3»; $phones = «Samsung Galaxy III»; $num = count($phones); for($i=0;$i<$num;$i++) echo «$phones <br />»; ?>

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

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

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

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

<?php $phones = «Nokia N9»; $phones = «Samsung Galaxy III»; $phones = «Sony Xperia Z3»; $phones = «iPhone5»; echo $phones; ?>

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

Оператор array

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

<?php $phones = array(‘iPhone’, ‘Samsung Galaxy S III’, ‘Nokia N9’, ‘Sony XPeria Z3’); echo $phones; ?>

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

<?php $phones = array(«apple»=>»iPhone5», «samsumg»=>»Samsung Galaxy III», «nokia» => «Nokia N9», «sony» => «Sony XPeria Z3»); echo $phones; ?>

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

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

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

<?php $phones = array(«apple»=>»iPhone5», «samsumg»=>»Samsung Galaxy III», «nokia» => «Nokia N9», «sony» => «Sony XPeria Z3»); foreach($phones as $item) echo «$item <br />»; ?>

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

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

<?php $phones = array(«apple»=>»iPhone5», «samsumg»=>»Samsung Galaxy III», «nokia» => «Nokia N9», «sony» => «Sony XPeria Z3»); foreach($phones as $key=>$value) echo «$key => $value <br />»; ?>

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

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

<?php $phones = array(«apple»=>»iPhone5», «samsumg»=>»Samsung Galaxy III», «nokia» => «Nokia N9», «sony» => «Sony XPeria Z3»); while (list($key, $value) = each($phones)) echo «$key => $value <br />»; ?>

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

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

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

<?php $phones = array( «apple»=> 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 «<h3>$brand</h3>»; echo «<ul>»; foreach ($items as $key => $value) { echo «<li>$value</li>»; } echo «</ul>»; } ?>

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

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

echo $phones;

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

echo $phones;

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

<?php $technics = array( «phones» => 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 «<h3>$tovar</h3>»; echo «<ul>»; foreach ($items as $key => $value) { echo «<li>$key : $value</li>»; } echo «</ul>»; } // присвоим одному из элементов другое значение $technics = «Nokia Lumnia 930»; // выведем это значение echo $technics; ?>

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *