php массив поменять местами индексы и значения
array_flip
(PHP 4, PHP 5, PHP 7, PHP 8)
array_flip — Меняет местами ключи с их значениями в массиве
Описание
Функция array_flip() возвращает массив ( array ) наоборот, то есть ключи массива array становятся значениями, а значения массива array становятся ключами.
Если значение встречается несколько раз, для обработки будет использоваться последний встреченный ключ, а все остальные будут потеряны.
Список параметров
Массив переворачиваемых пар ключ/значение.
Возвращаемые значения
Возвращает перевёрнутый массив в случае успешного выполнения и null в случае возникновения ошибки.
Примеры
Пример #1 Пример использования array_flip()
Результат выполнения данного примера:
Пример #2 Пример использования array_flip() с коллизиями
Результат выполнения данного примера:
Смотрите также
User Contributed Notes 18 notes
This function is useful when parsing a CSV file with a heading column, but the columns might vary in order or presence:
?>
I find this better than referencing the numerical array index.
array_flip will remove duplicate values in the original array when you flip either an associative or numeric array. As you might expect it’s the earlier of two duplicates that is lost:
array(3) <
[0] => string(3) «one»
[1] => string(3) «two»
[2] => string(3) «one»
>
This may be good or bad, depending on what you want, but no error is thrown.
array_flip() does not retain the data type of values, when converting them into keys. 🙁
It is valid expectation that string values «1», «2» and «3» would become string keys «1», «2» and «3».
When you do array_flip, it takes the last key accurence for each value, but be aware that keys order in flipped array will be in the order, values were first seen in original array. For example, array:
In my application I needed to find five most recently commented entries. I had a sorted comment-id => entry-id array, and what popped in my mind is just do array_flip($array), and I thought I now would have last five entries in the array as most recently commented entry => comment pairs. In fact it wasn’t (see above, as it is the order of values used). To achieve what I need I came up with the following (in case someone will need to do something like that):
First, we need a way to flip an array, taking the first encountered key for each of values in array. You can do it with:
Well, and to achieve that «last comments» effect, just do:
$array = array_reverse($array, true);
$array = array_flip(array_unique($array));
$array = array_reverse($array, true);
In the example from the very beginning array will become:
Just what I (and maybe you?) need. =^_^=
In case anyone is wondering how array_flip() treats empty arrays:
( array_flip (array()));
?>
results in:
I wanted to know if it would return false and/or even chuck out an error if there were no key-value pairs to flip, despite being non-intuitive if that were the case. But (of course) everything works as expected. Just a head’s up for the paranoid.
I needed a way to flip a multidimensional array and came up with this function to accomplish the task. I hope it helps someone else.
array_flip
array_flip — Поменять местами значения массива
Описание
Функция array_flip() возвращает array в обратном порядке, то есть ключи массива input становятся значениями, а значения массива input становятся ключами.
Обратите внимание, что значения массива input должны быть корректными ключами, то есть они должны иметь тип integer или string. Если значение имеет неверный тип, будет выдано предупреждение и пара ключ/значение не будет обработана.
Если значение встречается несколько раз, для обработки будет использоваться последний встреченный ключ, а все остальные будут потеряны.
Функция array_flip() возвращает FALSE, если обработка массива вызвала ошибку.
Пример #1 Пример использования array_flip()
Пример #2 Пример использования array_flip(): многократное повторение значения
Коментарии
I know a lot of people want a function to remove a key by value from an array. I saw solutions that iterate(!) though the whole array comparing value by value and then unsetting that value’s key. PHP has a built-in function for pretty much everything (heard it will even cook you breakfast), so if you think «wouldn’t it be cool if PHP had a function to do that. «, odds are it already has. Check out this example. It takes a value, gets all keys for that value if it has duplicates, unsets them all, and returns a reindexed array.
When you do array_flip, it takes the last key accurence for each value, but be aware that keys order in flipped array will be in the order, values were first seen in original array. For example, array:
In my application I needed to find five most recently commented entries. I had a sorted comment-id => entry-id array, and what popped in my mind is just do array_flip($array), and I thought I now would have last five entries in the array as most recently commented entry => comment pairs. In fact it wasn’t (see above, as it is the order of values used). To achieve what I need I came up with the following (in case someone will need to do something like that):
First, we need a way to flip an array, taking the first encountered key for each of values in array. You can do it with:
Well, and to achieve that «last comments» effect, just do:
$array = array_reverse($array, true);
$array = array_flip(array_unique($array));
$array = array_reverse($array, true);
In the example from the very beginning array will become:
Just what I (and maybe you?) need. =^_^=
In case anyone is wondering how array_flip() treats empty arrays:
( array_flip (array()));
?>
results in:
I wanted to know if it would return false and/or even chuck out an error if there were no key-value pairs to flip, despite being non-intuitive if that were the case. But (of course) everything works as expected. Just a head’s up for the paranoid.
/*
Fun function to return the longest physical *value* from an array.
corz at corz dot org
*/
Website-create.ru
В программировании в целом и при создании сайтов в частности нам все время приходится иметь дело с массивами.
Например, мы получаем данные из базы в виде массива и выводим их на сайт. Также мы можем собирать какие-то данные в массив и в последствии захотеть как-то их модифицировать.
Обычно, чтобы просто вывести данные из массива, достаточно пройтись по нему циклом, например foreach.
Однако, часто бывает так, что данные в массиве нам нужно изменить или как-то обработать.
Для этих задач можно также использовать цикл, но можно сделать это куда более элегантно и удобно, написав при этом меньше кода.
Сегодня рассмотрим, как применить какое-либо действие к каждому элементу массива.
Вариант 1. Изменяем элементы массива в цикле.
Для начала предлагаю создать массив и заполнить его.
Я не буду делать это вручную, а воспользуюсь циклом. Вот так.
Если сейчас мы выведем наш массив на экран, то увидим следующее.
Как видите, индексы массива начинаются с 0, в то время, как их значения начинаются с 1. В реальной же ситуации довольно часто значение индекса будет не соответствовать значению элемента. Кроме того, индексы в массиве вообще могут идти не по порядку. Об этом следует помнить.
Что если теперь мы захотим изменить каждый элемент массива, умножив его значение на 2.
Мы можем сделать это, воспользовавшись циклом foreach. Мы будем перебирать массив и умножать каждый его элемент на 2.
Выведем результат на экран.
Мы получили нужный результат. Теперь давайте попробуем сделать то же самое, но с помощью функции array_map().
Вариант 2. Изменяем элементы массива при помощи array_map().
Эта функция принимает на вход несколько параметров:
Функция возвращает преобразованный массив. Если функции передается один массив, то ключи аргументов будут сохранены (что иногда может иметь большое значение).
Итак, давайте посмотрим, как это может выглядеть. В моем примере я не создаю отдельную callback-функцию, а передаю анонимную функцию в качестве аргумента.
Выведем результат на экран.
Получаем тот же самый результат. Однако, в этом варианте, даже если бы ключи элементов шли не по порядку, их значения были бы сохранены, в отличие от изменения значений элементов в цикле foreach.
На следующей картинке покажу вам разницу в результатах.
Разница в изменении значений элементов массива при использовании foreach и array_map(), когда ключи идут не по порядку.
Попробуйте проделать все это сами, чтобы прочувствовать результат.
Не ограничивайтесь перебором массивов в циклах, потому что для некоторых задач уже существуют специальные функции, которые решают эти задачи гораздо более эффективно.
До новых встреч в новых статьях. Понравилась статья? — Ставьте лайк, делитесь с друзьями, оставляйте комменты.
Функции для работы с массивами
Содержание
User Contributed Notes 14 notes
A simple trick that can help you to guess what diff/intersect or sort function does by name.
Example: array_diff_assoc, array_intersect_assoc.
Example: array_diff_key, array_intersect_key.
Example: array_diff, array_intersect.
Example: array_udiff_uassoc, array_uintersect_assoc.
This also works with array sort functions:
Example: arsort, asort.
Example: uksort, ksort.
Example: rsort, krsort.
Example: usort, uasort.
?>
Return:
Array ( [ 0 ] => Cero [ 1 ] => Uno [ 2 ] => Dos [ 3 ] => Cuatro [ 4 ] => Cinco [ 5 ] => Tres [ 6 ] => Seis [ 7 ] => Siete [ 8 ] => Ocho [ 9 ] => Nueve [ 10 ] => Diez )
Array ( [ 0 ] => Cero [ 1 ] => Uno [ 2 ] => Dos [ 3 ] => Tres [ 4 ] => Cuatro [ 5 ] => Cinco [ 6 ] => Seis [ 7 ] => Siete [ 8 ] => Ocho [ 9 ] => Nueve [ 10 ] => Diez )
?>
Updated code of ‘indioeuropeo’ with option to input string-based keys.
Here is a function to find out the maximum depth of a multidimensional array.
// return depth of given array
// if Array is a string ArrayDepth() will return 0
// usage: int ArrayDepth(array Array)
Short function for making a recursive array copy while cloning objects on the way.
If you need to flattern two-dismensional array with single values assoc subarrays, you could use this function:
to 2g4wx3:
i think better way for this is using JSON, if you have such module in your PHP. See json.org.
to convert JS array to JSON string: arr.toJSONString();
to convert JSON string to PHP array: json_decode($jsonString);
You can also stringify objects, numbers, etc.
Function to pretty print arrays and objects. Detects object recursion and allows setting a maximum depth. Based on arraytostring and u_print_r from the print_r function notes. Should be called like so:
I was looking for an array aggregation function here and ended up writing this one.
Note: This implementation assumes that none of the fields you’re aggregating on contain The ‘@’ symbol.
While PHP has well over three-score array functions, array_rotate is strangely missing as of PHP 5.3. Searching online offered several solutions, but the ones I found have defects such as inefficiently looping through the array or ignoring keys.
Php массив поменять местами индексы и значения
Меняет местами индексы и значения массива.
Синтаксис:
Эта функция «пробегает» по массиву и меняет местами его ключи и значения. Исходный массив arr не изменяется, а результирующий массив просто возвращается. Если в массиве присутствовало несколько элементов с одинаковыми значениями, учитываться будет только последний из них.
Значения массива arr должны быть либо целыми числами, либо строковыми значениями. Иначе пара ключ / значение не будут обработаны.
Функция array_flip() возвратит FALSE, если обработка массива вызвала ошибку.
Пример использования функции array_flip():
Пример использования функции array_flip():
Приведенный выше пример выведет следующее:
Функция поддерживается PHP 4, PHP 5
Функция устанавливает значения ключей массива в верхний или нижний регистр.
Синтаксис:
Пример выведет следующее:
Функция поддерживается PHP 4 >= 4.2.0, PHP 5
Пример выведет следующее:
Функция поддерживается PHP 5
Проверка существования заданного ключа в массиве.
Синтаксис:
Функция array_key_exists() возвратит TRUE, если в массиве search присутствует элемент с индексом key.
В противном случае возвратит FALSE.
Пример использования функции array_key_exists():
В PHP 4.0.6. имя этой функции key_exists().
Функция поддерживается PHP 4 >= 4.0.1, PHP 5
Вычислить произведение значений массива (PHP 5 >= 5.1.0RC1)
array_product() возвращает произведение значений массива как целое число или число с плавающей точкой.
Пример использования array_product()
Результат выполнения данного примера:
Итеративно уменьшить массив к единственному значению, используя функцию обратного вызова (PHP 4 >= 4.0.5, PHP 5)
array_reduce() итеративно применяет функцию function к элементам массива input и, таким образом, сводит массив к единственному значению. Если указан дополнительный параметр initial, он будет использован в начале процесса, или в качестве окончательного результата, если массив пуст.
Рекурсивно применить пользовательскую функцию к каждому элементу массива (PHP 5)
Применяет пользовательскую функцию funcname к каждому элементу массива input. Эта функция обрабатывает каждый элемент многомерного массива. Обычно у функции funcname два параметра. Значение массива array в качестве первого параметра, и ключ/индекс в качестве второго. Если указан дополнительный параметр userdata, он будет передан в качестве третьего параметра в функцию обратного вызова funcname.
Возвращает TRUE в случае успешного завершения или FALSE в случае возникновения ошибки.
Замечание: Если требуется, чтобы функция funcname изменила значения в массиве, определите первый параметр funcname как ссылку. Тогда все изменения будут применены к элементам массива.
Пример использования array_walk_recursive()
Вывод вышеприведённой программы:
Обратите внимание, что ключ ‘sweet’ никогда не отображается. Никакой ключ, соответствующий значению типа array, не будет передан в функцию.
Возвращает список из ключей массива.
Синтаксис:
Функция возвращает массив, значениями которого являются все строковые и числовые ключи массива arr. Если задан необязательный параметр search_value, то она вернет только те ключи, которым соответствуют значению search_value.
Пример испольльзования функции array_keys():
Приведенный выше пример выведет следующее:
Функция array_keys() появилась в PHP 4.
Ее эквивалент для PHP 3:
Функция поддерживается PHP 4, PHP 5
Удаление ассоциативных индексов массива.
Синтаксис:
Функция array_values() возвращает список всех значений в ассоциативном массиве arr. При этом она заменяет все строковые ключи на числовые.
Пример использования функции array_values():
Этот пример выведет:
Функция поддерживается PHP 4, PHP 5
Осуществляет проверку массива на наличие значения.
Синтаксис:
Функция in_array() возвратит TRUE, если в массиве haystack содержится элемент со значением needle, и FALSE в противном случае.
Если установить третий необязательный параметр strict в значение TRUE, то функция in_array() при проверке также будет сравнивать типы значений.
Замечание: Если параметр needle является строкой, то при сравнении регистр символов учитывается.
Замечание: В PHP версии ниже 4.2.0 параметр needle не мог быть массивом.
Пример использования функции in_array():
Второе условие не сработает, т.к. поиск в массиве идет с учетом регистра.
Пример выведет:
Пример использования функции in_array(): Использование параметра strict
Функция поддерживается PHP 4, PHP 5
Возвращает количество значений массива.
Синтаксис:
Пример выведет следующее:
Функция поддерживается PHP 4, PHP 5
Возвращает число элементов массива.
Синтаксис:
Функция sizeof() возвращает количество элементов в массиве arr на подобие действия функции count().
Возвращает число элементов в массиве или объекте.
Синтаксис:
Если задан необязательный параметр mode, то будет подсчитано общее количество элементов в массиве. Это может быть полезно при нахождении количества элементов в многомерных массивах.
Пример использования функции count():
Пример использования функции count(): (PHP >= 4.2.0)
Функция поддерживается PHP 3, PHP 4, PHP 5
Возвращает сумму всех элементов массива.
Синтаксис:
Функция array_sum() возвращает сумму всех числовых элементов массива. От типа значений в массиве зависит тип возвращаемого числа (integer или float).
Пример использования функции array_sum():
Этот пример выведет следующее:
Функция поддерживается PHP 4 >=4.0.4, PHP 5
Производит случайную выборку индексов массива.
Синтаксис:
Функция array_rand() будет полезной, если вы хотите выбрать одно или несколько случайных значений из массива. Эта функция возвращает в массиве выбранные случайным образом индексы элементов массива arr.
Аргумент num_req указывает число возвращаемых индексов. В случае, если выбирается один элемент, то функция array_rand() возвратит случайный ключ в виде значения.
Пример использования функции array_rand():