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.
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():
Поменять местами значения переменных в PHP
Существует красивое и элегантное решение в одну строку:
А для PHP версий 5.3 и старше можно воспользоваться сокращённым вариантом:
Что более читаемо и проще, чем классическое:
Кроме того, таким образом можно поменять местами значения более чем двух переменных за раз:
Существует ещё несколько классических решений, которые работают только с целочисленными переменными. Например, с помощью XOR:
Либо вариант со сложением и вычитанием:
В случае со сложением можно выйти за диапазон допустимых значений если значения переменных будут достаточно большими. XOR решает эту проблему, но необходимо понимать что это работает с int, а для string или каких-то других типов придётся использовать другой подход.
Как поменять местами значения переменных в других языках
Для Python и Ruby будет такое элегантное решение:
А для PHP и Java знатоки предлагают такой вариант:
Для прочих языков можно попробовать воспользоваться такими решениями:
Также существует бесконечная масса вариаций этих решений, где добавляются дополнительные операции и необоснованно решение усложняется.
Читайте также
Иногда при обработке с помощью PHP больших и не очень данных, можно словить досадную ошибку посреди выполнения скрипта: PHP Fatal…
Vim не самый юзер-френдли текстовый консольный редактор, например, nano на порядок удобнее и интуитивнее. Однако, именно vim является редактором для…
Если в кратце, то суть такая: file_put_contents() не атомарен и не гарантирует записи данных файл, а может вообще очистить его…
Ключи и значения
array_flip
Меняет местами индексы и значения массива.
Синтаксис:
array array_flip(array arr)
Эта функция «пробегает» по массиву и меняет местами его ключи и значения. Исходный массив arr не изменяется, а результирующий массив просто возвращается. Если в массиве присутствовало несколько элементов с одинаковыми значениями, учитываться будет только последний из них.
Значения массива arr должны быть либо целыми числами, либо строковыми значениями. Иначе пара ключ / значение не будут обработаны.
Функция array_flip() возвратит FALSE, если обработка массива вызвала ошибку.
Пример использования функции array_flip():
$trans = array_flip ($trans);
Пример использования функции array_flip():
многократное повторение значения
$trans = array («a» => 1, «b» => 1, «c» => 2);
$trans = array_flip ($trans);
Приведенный выше пример выведет следующее:
Функция поддерживается PHP 4, PHP 5
array_keys
Возвращает список из ключей массива.
Синтаксис:
array array_keys(array arr [,mixed search_value])
Функция возвращает массив, значениями которого являются все строковые и числовые ключи массива arr. Если задан необязательный параметр search_value, то она вернет только те ключи, которым соответствуют значению search_value.
Пример испольльзования функции array_keys():
$arr = array(«blue», «red», «green», «blue», «blue»);
$array = array («color» => array(«blue», «red», «green»), «size» => array(«small», «medium», «large»));
Приведенный выше пример выведет следующее:
Array( [0] => 0 [1] => color)Array( [0] => 0 [1] => 3 [2] => 4)Array( [0] => color [1] => size)
Функция array_keys() появилась в PHP 4.
Ее эквивалент для PHP 3:
while (list($k,$v) = each($arr)) <
Функция поддерживается PHP 4, PHP 5
array_values
Удаление ассоциативных индексов массива.
Синтаксис:
array array_values(array arr)
Функция array_values() возвращает список всех значений в ассоциативном массиве arr. При этом она заменяет все строковые ключи на числовые.
Пример использования функции array_values():
$arr = array(«size» => «XL», «color» => «gold»);
Этот пример выведет:
Array( [0] => XL [1] => 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():
Второе условие не сработает, т.к. поиск в массиве идет с учетом регистра.
Пример использования функции in_array(): Использование параметра strict
ph was found o was found
Функция поддерживается PHP 4, PHP 5
array_count_values
Возвращает количество значений массива.
Синтаксис:
array array_count_values(array arr)
Пример использования функции array_count_values():
$arr = array(1, «hello», 1, «world», «hello»);
Пример выведет следующее:
Array( [1] => 2 [hello] => 2 [world] => 1)
Функция поддерживается PHP 4, PHP 5
sizeof
Возвращает число элементов массива.
Синтаксис:
int sizeof(array arr)
Функция sizeof() возвращает количество элементов в массиве arr на подобие действия функции count().
count
Возвращает число элементов в массиве или объекте.
Синтаксис:
int count(mixed var [, int mode])
Надо отметить, что 0 возвращается и тогда, когда указан массив, не содержащий элементов (NULL).
Если задан необязательный параметр mode, то будет подсчитано общее количество элементов в массиве. Это может быть полезно при нахождении количества элементов в многомерных массивах.
Пример использования функции count():
Пример использования функции count(): (PHP = 4.2.0)
array(«orange», «banana», «apple»),
«veggie» => array(«carrot», «collard», «pea»));
echo count($food, COUNT_RECURSIVE); // выведет 8
echo count($food); // выведет 2
Функция поддерживается PHP 3, PHP 4, PHP 5
array_sum
Возвращает сумму всех элементов массива.
Синтаксис:
mixed array_sum(array arr)
Функция array_sum() возвращает сумму всех числовых элементов массива. От типа значений в массиве зависит тип возвращаемого числа (integer или float).
Пример использования функции array_sum():
Этот пример выведет следующее:
Функция поддерживается 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():
Функция поддерживается PHP 4, PHP 5
array_change_key_case
Функция устанавливает значения ключей массива в верхний или нижний регистр.
Синтаксис:
array array_change_key_case(array arr[, int registr])
Функция array_change_key_case() возвращает исходный массив arr, ключи которого преобразованы в верхний или нижний регистр.
Необязательный параметр registr может принимать следующие значения:
Данная функция не изменяет ключи, состоящие из чисел.
Пример использования функции array_change_key_case():
$array = array(«FirSt» => 1, «SecOnd» => 4);
Пример выведет следующее:
Функция поддерживается PHP 4 = 4.2.0, PHP 5
array_combine
Синтаксис:
array array_combine(array keys, array values)
Функция возвратит FALSE, если размерность массивов keys и values не совпадают, или эти массивы не содержат значений.
Пример использования функции array_combine():
Пример выведет следующее:
Array( [green] => avocado [red] => apple [yellow] => banana)
Функция поддерживается PHP 5
array_key_exists
Проверка существования заданного ключа в массиве.
Синтаксис:
bool array_key_exists(mixed key, array search)
Функция array_key_exists() возвратит TRUE, если в массиве search присутствует элемент с индексом key.
В противном случае возвратит FALSE.
Пример использования функции array_key_exists():
echo «The first element is in the array»;
В PHP 4.0.6. имя этой функции key_exists().
Функция поддерживается PHP 4 = 4.0.1, PHP 5
Читайте также
Ключи реестра
Ключи реестра На рис. 3.1 показана аналогия между разделами реестра и каталогами файловой системы. Каждый раздел может содержать другие разделы или последовательности пар «имя-значение». В то время как доступ к файловой системе реализуется посредством указания путей
Ключи к человеку
Ключи к человеку Метки: задачи, как общаться с блоггерами, корпоративный блогИногда компания для внешних наблюдателей выглядит «черным ящиком», из которого наружу просачиваются скупые официальные данные. Причем у каждой успешной фирмы рано или поздно возникает
Ключи командной строки
Ключи командной строки Большинству пользователей не нужно работать с интерфейсом командной строки, ключи предназначены для использования системными администраторами. С их помощью можно вручную установить или удалить Radmin, изменить номер порта, а также производить
5.4.2. Ключи созданы – что дальше?
5.4.2. Ключи созданы – что дальше? Теперь начинается самое интересное. Щелкните на вашей паре ключей правой кнопкой мыши и выберите команду Экспорт. Вас попросят ввести имя файла, в который будут экспортированы ключи. Введите любое имя несуществующего файла. Затем
Первичные ключи в таблицах
Первичный и уникальный ключи
Первичный и уникальный ключи Первичные ключи являются одним из основных видов ограничений в базе данных. Они применяются для однозначной идентификации записей в таблице. Допустим, мы храним в базе данных список людей. Вполне вероятно, что могут появиться два (или больше)
Внешние ключи
Внешние ключи Следующим ограничением, которое часто используется в базах данных InterBase, является ограничение внешнего ключа. Это очень мощное средство для поддержания ссылочной целостности в базе данных, которое позволяет не только контролировать наличие правильных
1. Пустые значения (Empty-значения)
1. Пустые значения (Empty-значения) Пустое значение – это просто одно из множества возможных значений какого-то вполне определенного типа данных.Перечислим наиболее «естественные», непосредственные пустые значения (т. е. пустые значения, которые мы могли бы выделить
2. Неопределенные значения ( Null-значения)
2. Неопределенные значения (Null-значения) Слово Null используется для обозначения неопределенных значений в базах данных.Чтобы лучше понять, какие значения понимаются под неопределенными, рассмотрим таблицу, являющуюся фрагментом базы данных: Итак, неопределенное
Ключи и индексы
Ключи и индексы Просмотры не могут иметь ключей или индексов. Лежащие в их основе таблицы, называемые базовыми таблицами, будут использованы как источник индексов при конструировании оптимизатором планов запроса. Тема плана запроса для запросов, включающих просмотры,
2.2.5. Ключи
Ключи.
Ключи. Ключ — это число, которое используется криптографическим алгоритмом для шифрования текста. Как правило, ключи — это очень большие числа. Размер ключа измеряется в битах. Число, представленное 1024 битами — очень большое. В публичной криптографии, чем больше ключ,
Генерим ключи.
Генерим ключи. После перезагрузки компьютера в нижнем правом углу (панель задач) появится значок PGP — символ амбарного замка. Поставьте на него мышку, нажмите на мышку и выберите в открывшемся меню команду Launch PGP keys.• Зайдите в меню KEYS и выполните команду NEW KEY• Нажмите на
Ключи
Ключи Ключ— это некоторая величина, которая, работая в сочетании с криптоалгоритмом, производит определённый шифртекст. Ключи, как правило, — это очень-очень-очень большие числа. Размер ключа измеряется в битах; число, представляющее 2048-битовый ключ, чертовски большое. В
В PHP, как изменить ключ элемента массива?
У меня есть ассоциативный массив в виде key => value где key-числовое значение, однако это не последовательное числовое значение. Ключ на самом деле является ID-номером, а значение-count. Это нормально для большинства случаев, однако мне нужна функция, которая получает читаемое человеком имя массива и использует его для ключа, не изменяя значение.
Я не видел функции, которая делает это, но я предполагаю, что мне нужно предоставить старый ключ и новый ключ (оба из которых я есть) и преобразовать массив. Есть ли эффективный способ сделать это?
18 ответов
способ сделать это и сохранить порядок массива-это поместить ключи массива в отдельный массив, найти и заменить ключ в этом массиве, а затем объединить его со значениями.
вот функция, которая делает именно это:
если array построен из запроса базы данных, вы можете изменить ключ непосредственно из mysql о себе:
использовать что-то вроде:
ответ от KernelM хорош, но во избежание проблемы, поднятой Грегом в комментарии (конфликтующие ключи), использование нового массива было бы безопаснее
вы можете использовать второй ассоциативный массив, который сопоставляет читаемые человеком имена с идентификаторами. Это также обеспечит отношения от многих до 1. Тогда сделайте что-нибудь вроде этого:
Если вы также хотите, чтобы позиция нового ключа массива была такой же, как и старая, вы можете сделать это:
Если Ваш массив рекурсивен, вы можете использовать эту функцию: проверьте эти данные:
мне нравится решение KernelM, но мне нужно было что-то, что будет обрабатывать потенциальные конфликты ключей (где новый ключ может соответствовать существующему ключу). Вот что я придумал:
затем вы можете выполнить цикл через массив следующим образом:
вот вспомогательная функция для достижения этого:
вернет правда при успешном переименовании, в противном случае false.
эта функция будет сохранить исходный порядок, но может быть проблематичным для очень больших (например, выше записей 10k) массивов относительно производительность и память.
эта альтернативная функция будет делать то же самое, с гораздо лучшую производительность & памяти использование, за счет потери исходного заказа (что не должно быть проблемой, так как это hashtable!)