Пред.
След.
Макеты страниц
Распознанный текст, спецсимволы и формулы могут содержать ошибки, поэтому с корректным вариантом рекомендуем ознакомиться на отсканированных изображениях учебника выше Также, советуем воспользоваться поиском по сайту, мы уверены, что вы сможете найти больше информации по нужной Вам тематике ДЛЯ СТУДЕНТОВ И ШКОЛЬНИКОВ ЕСТЬ
ZADANIA.TO
20.3. Функции возвращенияДля более удобного программирования принято использовать своего рода указатели в массивах, т. е. $а => "hello". Иногда необходимо осуществить работу именно с самими указателями. Получить доступ к ним помогает функция array_keys(). Эта функция возвращает массив значений с указателями, которые были применены в массивах, приведенных в данной функции. Ее синтаксис:
array array_keys (array input [, mixed search_value]) Данная функция введена в PHP 4. Приведем примеры применения данной функции. Пример 20.6. Функция array_keys (вариант 1) $array = array(0 => 100, "color" => "red"); array_keys($array) ; // результат array (0, "color") Данный пример возвращает массив array(0, "color"). Пример 20.7. Функция array_keys (вариант 2) $array = array ("машина", "дом", "компьютер", "машина", "машина"); array_keys($array, "машина"); // результат array (0, 3, 4) Когда указателей нет, то после определения массива, с которым должна работать функция, также указывается значение, на какое именно ей стоит обращать внимание. В нашем случае это "машина". В результате данная функция вернет следующий массив: array(0,3,4); Это номера индексов, под которыми значения массива соответствует искомому значению "машина". Пример 20.8. Функция array_keys (вариант 3) $array = array("color" => array("blue", "red", "green"), "size" = > array ("small", "medium", "large")); array_keys ($array); // результат array("color", "size") Даже если сами указатели работаютнепосредственно с массивами, функция array_keys все равно будет возвращать массив указателей заданного в ней массива. Это иногда очень полезно и помогает избавиться от ненужных громоздких выражений вычисления, которые необходимо проделать, чтобы получить массив со значениями. ВНИМАНИЕ Эти операции необходимо было проделать в РНР 3, так как функция array_keys включена только в РНР 4. Приведем пример: function array_keys($arr, $term="") { $t = array (); while (list ($k,$v) = each($arr)) { if ($term && $v != $term) continue; $t[] = $k; } return $t; } Рассмотрим функцию array_values, похожую по принципу действия на array_key(). Она предназначена для получения массива значений из массивов, внесенных в нее. Другими словами, функция array_key находит ссылки и создает массив из них, а функция array_value работает по тому же принципу, только она находит все значения, не обращая внимания на ссылки (указатели в этих массивах) , и также создает массив из найденных значений: array array_values(array input) Применяется в РНР 4 и старше. ВНИМАНИЕ В РНР 3 для этой цели использовали следующую функцию: function array_values($arr) { $t = array(); while(list($k, $v) = each($arr) ) { $t[] = $v; return $t; } } Она помогает реализовать тот же принцип, но в данный момент уже устарела, поэтому лучше пользоваться array_values, так вы сможете сэкономить время и энергию. Пример выполнения array_values(): $array = array("размер" => "XXL", "марка" => "BMW"); array_values($array) ; // возвращается array("XXL", "BMW") Результатом выполнения данного кода будет массив, состоящий из значений «ХХL», «BMW». Чтобы поменять местами значения массива, существует много разных функций, все зависит от того, в каком направлении действовать. Если необходимо поменять элементы в обратном порядке, применяется функция array_revers(): array array_reverse(array array [, bool preserve_keys]) Введена в версию РНР 4 и старше, чем 4.0b4. Если будет указана как true, то значения переменных массива изменят свое местоположение, а индексы останутся на прежнем месте. Например: $input = array("мама", 4.0, array ("папа", "сестра")); $result = array_reverse ($input); // первый случай $result_keyed = array_reverse ($input, true); // второй случай В первом случае получим: array ([0] => array ( [0] => папа [1 ] => сестра) [1] => 4 [2] => мама). Во втором случае результат будет следующий: array ([2] => array ([0] => папа [1] => сестра) [1] => 4 [0] => мама) Обратите что значение "мама" в первом случае находится в массиве под индексом, равным 2, а во втором случае индекс своего значения не изменил, т. е. остался равным нулю. Параметр функции array_reserve — preserve_keys добавлен в функцию в РНР 4.0.3. Как правило, каждый массив имеет свой внутренний указатель на текущий элемент, который изначально стоит на первом элементе, вставленном в матрицу. Функция current() просто возвращает элемент массива, на котором находится внутренний указатель. Это не перемещает указатель. Если внутренние точки указателя вне списка элементов, то функция current возвращает Приведем пример: <? $input = array("php", 4.0, array("green", "red")); $my = current($input); $result_keyed = array_reverse ($input, true); $my1 = current($result_keyed); print_r($my); print_r($my1); ?> Результат выполнения данной программы: php array( [0] => green [1] => red) Это те самые первые значения, о которых было сказано выше. ВНИМАНИЕ Если матрица содержит пустые элементы (0 или "" — пустая строка), тогда эта функция возвратит false для этих элементов. При использовании функции current() могут возникнуть проблемы при определении, находится ли указатель действительно в конце списка такого массива или нет. Чтобы более подробно узнать о свойствах массива, а в частности о том, может он состоять из пустого элемента или нет, используйте функцию each(). Данная функция возвращает значение текущего указателя и непосредственно само значение элемента в массиве. Синтаксис: array each(array array) Функция возвращает значение индекса матрицы и его переменной (текущее) и передвигает курсор в массиве. Эти значения возвращаются в четырехэлементной матрице со значениями 0, 1, указателем и значением. Элементы 0 и указатель содержат ключевое название элемента массива, а 1 и значение содержат данные. Если внутренний указатель матричных точек проходит мимо всех значений, функция each() возвращает false. Приведем пример: $new = array("саша", "игорь", "таня", "валера", "катя", "надя"); $too = each($new); Результатом выполнения данной программы будет массив, состоящий из следующих строк: 0 => 0 1 => 'саша' key => 0 value => 'саша' Так как никаких с указателем матрицы не было произведено, то key = 0;. Теперь произведем преобразования: $new = array ("Саша" => "Шурик", "Виталик" => "Виталь"); $bar = each($new); В итоге получим: 0 => 'Саша' 1 => 'Шурик' key => 'Саша' value => 'Шурик' Если необходимо проверить наличие какой-либо конкретной переменной в массиве, как правило, используют функцию in_array(). Функция введена в PHP 4. Она работает с условными операторами и возвращает булевую переменную: bool in_array(mixed значение, array имя_массива, bool strict) Как видно, данная функция производит поиск значения в массиве, в поле, где указана строка Она возвращает true, если значение, которое ищется в данном Если переменная не была то данная функция возвращает false. Если в третьей строке данной функции bool strict установлен атрибут true, то функция in_array() осуществляет проверку типа "значения" в нашем массиве. <? $new = array("Hello", "NTT", "World", "New"); if (in_array("NTT", $new) ) { print "Значение NTT в массиве $new найдено n"; print_r ($new); } ?> В первой строке данного примера задается массив $new со значениями: Hello, NTT, World, New. Далее, как и было сказано выше, используется оператор условия, в котором и происходит проверка. В нашем примере функция возвращает значение true, так как искомое значение существует в массиве. После этого выполняются функции print() и print_r() , Результат данной программы будет следующим: Значение переменной NTT в массиве Array найдено Array ([0] => Hello[1] => NTT[2] => World[3] => New) Поиск можно осуществлять также в более строгой форме, т. е. сравнивая помимо значения еще и тип. Например: <? $new = array("Hello", "NTT", "World", "New"); if (in_array("NTT", $new, true)) { print "Значение найдено в строгом соответствии с заданным типом"; } ?> Результатом данной программы будет: Значение найдено в строгом соответствии с заданным типом Рассмотрев функцию in_array(), следует уделить внимание и функции Она имеет аналогичный принцип работы, единственное отличие — возвращаемое значение в переменную. Функция in_array возвращает значение true (истина) или false, а эта функция — значения индекса переменной, которым обозначается данная переменная, т. е. s[1] = 34; индексом является значение, равное 1. Искомое число в нашем случае будет 34. Синтаксис этой функции: mixed array_search (mixed needle, array haystack, bool strict) Приведем пример, характеризующий принципы работы данной функции: <? $new = array("Hello", "NTT", "World", "New"); $a = array_search("Hello", $new,true); print "Индекс значения Hello равен $a<br>", $b = array_search("NTT", $new, true); print "Индекс значения NTT равен $b<br>"; $с = array_search("World", $new,true); print "Индекс значения World равен $с <br>"; $d = array_search("New", $new, true); print "Индекс значения New равен $d <br>"; print_r($new); ?> Результат работы данной программы: Индекс значения Hello равен 0 Индекс значения NTT равен 1 Индекс значения World равен 2 Индекс значения New равен 3 Array ([0] => Hello [1] => NTT [2] => World [3] => New) Обратите внимание, что все значения, которые возвращает функция, строго совпадают с нумерацией индекса.
|
1 |
Оглавление
|