Как сделать значения ключами php

Добавил пользователь Владимир З.
Обновлено: 04.10.2024

Мне нужно узнать индекс $arr['firstStringName'] чтобы я мог перебирать array_keys($arr) и возвращать ключевую строку 'firstStringName' своим индексом. Как я могу это сделать?

Solutions Collecting From Web of "PHP – Получить имя ключа для значения массива"

Если у вас есть значение и вы хотите найти ключ, используйте array_search() следующим образом:

$key теперь будет содержать ключ для значения 'a' (то есть 'first' ).

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

Если я правильно понимаю, вы не можете просто использовать:

См. Руководство по PHP

Если динамика имени, то вы должны иметь что-то вроде

что означает, что ключ $ содержит значение ключа.

Вы можете использовать array_keys() чтобы получить ВСЕ ключи массива, например

Да, вы можете infact php – это один из немногих языков, которые предоставляют такую ​​поддержку.

используйте array_keys (), чтобы получить массив всех уникальных ключей.

Обратите внимание, что массив с именованными ключами, такими как ваш $ arr, также можно получить с помощью числовых индексов, например $ arr [0].

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

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

1 ответ 1

array_values - выбирает все значения массива


Всё ещё ищете ответ? Посмотрите другие вопросы с метками php или задайте свой вопрос.

Похожие

Для подписки на ленту скопируйте и вставьте эту ссылку в вашу программу для чтения RSS.

дизайн сайта / логотип © 2022 Stack Exchange Inc; материалы пользователей предоставляются на условиях лицензии cc by-sa. rev 2022.1.21.41235

Ассоциативный массив — это массив, в котором каждому элементу присваивается имя (ключ), и это имя используется для доступа к соответствующему элементу массива.

Создание ассоциативного массива

Как и с числовыми массивами для создания ассоциативного массива используется функция array() с необязательными аргументами для предварительной инициализации элементов массива. В случае ассоциативных массивов аргументы имеют форму ключ => значение , где ключ — это имя, по которому будет ссылаться элемент, а значение — это значение, которое будет сохранено в этой позиции в массиве.

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

$bankCard = array('clientName' => 'Иван Иванов', 'clientAddress' => 'Улица 1', 'clientNumber' => '123456789');

Этот же массив можно создать вторым способом:

$bankCard['clientName'] = 'Иван Иванов';
$bankCard['clientAddress'] = 'Улица 1';
$bankCard['clientNumber'] = '123456789';

Доступ к элементам ассоциативного массива

Теперь, когда мы создали ассоциативный массив и присвоили имена каждому элементу, мы можем использовать эти имена для доступа к соответствующим значениям массива. В следующем примере извлечём имя клиента из массива:

Пример

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

Доступ к значению элемента в ассоциативных массивах осуществляется только через строковые ключи, по индексу значение получить нельзя:

'Иван Иванов', 'clientAddress' => 'Улица 1', 'clientNumber' => '123456789'];

echo $bankCard['clientName']; // Иван Иванов
echo $bankCard[0]; // ERROR, так как элемента с индексом 0 в массиве нет
?>

Обход по ассоциативному массиву

Для ассоциативных массивов цикл foreach позволяет выполнять итерацию по ключам и значениям, используя следующий синтаксис:

Пример

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

Ключ = clientName
Значение = Иван Иванов
Ключ = clientAddress
Значение = Улица 1
Ключ = clientNumber
Значение = 123456789

У меня есть ассоциативный массив в форме key => value , где ключ - числовое значение, однако это не последовательное числовое значение. Ключ на самом деле является идентификационным номером, а значение - счетчиком. Это нормально для большинства случаев, однако я хочу, чтобы функция получала удобочитаемое имя массива и использовала его для ключа без изменения значения.

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

ОТВЕТЫ

Ответ 1

Ответ 2

То, как вы это сделаете, и сохранить порядок массива, - это положить ключи массива в отдельный массив, найти и заменить ключ в этом массиве, а затем объединить его со значениями.

Вот функция, которая делает именно это:

Ответ 3

если ваш array построен из запроса базы данных, вы можете напрямую изменить ключ из инструкции mysql :

используйте что-то вроде:

Ответ 4

Ответ от KernelM хорош, но для того, чтобы избежать проблемы, поднятой Грегом в комментарии (конфликтующие ключи), использование нового массива было бы безопаснее

Ответ 5

Вы можете использовать второй ассоциативный массив, который отображает человеческие читаемые имена в идентификаторы. Это также обеспечило бы отношения "Много к одному". Затем сделайте что-то вроде этого:

Ответ 6

Если вы хотите, чтобы позиция нового ключа массива была такой же, как и старая, вы можете сделать это:

Ответ 7

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

Затем вы можете циклически перемещаться по массиву следующим образом:

Ответ 8

Если ваш массив является рекурсивным, вы можете использовать эту функцию: проверьте эти данные:

Ответ 9

Вот вспомогательная функция для достижения этого:

Он вернет true при успешном переименовании, иначе false.

Ответ 10

Ответ 11

этот код поможет изменить старый ключ на новый

Ответ 12

эта функция будет принимать целевой хэш $, а $replace также является хешем, содержащим newkey = > ассоциации oldkey.

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

эта альтернативная функция будет делать то же самое, с гораздо лучшей производительностью и использованием памяти за счет потери первоначального порядка (что не должно быть проблемой, так как это hashtable!)

Ответ 13

это работает для переименования первого ключа:

тогда print_r ($ a) отображает восстановленный массив в порядке:

это работает для переименования произвольного ключа:

Ответ 14

Если вы хотите сразу заменить несколько клавиш (порядок сохранения):

Ответ 15

Существует альтернативный способ изменения ключа элемента массива при работе с полным массивом - без изменения порядка массива. Это просто, чтобы скопировать массив в новый массив.

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

Я сделал это, переключив ключ/значение для всех числовых записей массива - здесь: ['0' = > 'foo']. Обратите внимание, что порядок не поврежден.

Ответ 16

Вы можете использовать эту функцию на основе array_walk:

Ответ 17

Хмм, я раньше не тестировал, но я думаю, что этот код работает

Ответ 18

Тот, который сохраняет порядок, который прост для понимания:

Ответ 19

лучший способ - использовать ссылку, а не использовать unset (что делает еще один шаг для очистки памяти)

у вас есть один оригинал и одна ссылка с новым именем.

или, если вы не хотите иметь два имени в одном значении, хорошо сделать другую вкладку и foreach по ссылке

Итерация лучше для ключей, чем клонирование всего массива, и очистка старого массива, если у вас длинные данные, такие как 100 строк +++ и т.д.

Ответ 20

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

Цикл foreach PHP можно использовать следующим образом:

Как цикл foreach PHP работает с числовым массивом

В этом примере мы создадим массив из пяти элементов с числовыми значениями. После этого цикл foreach PHP будет использован для выполнения итерации этого массива. Внутри цикла foreach мы использовали echo , чтобы вывести значения массива:

Как цикл foreach PHP работает с числовым массивом

Посмотреть демо-версию и код

Цикл foreach PHP — примеры с ключами и значениями массива

В этом примере описан другой способ использования цикла foreach PHP . Для этого мы создали ассоциативный массив из трех элементов. В него входят имена сотрудников ( в качестве ключей ) и суммы заработной платы ( в качестве значений ):

Цикл foreach PHP - примеры с ключами и значениями массива

Посмотреть демо-версию и код

Цикл foreach PHP — примеры изменения значения элемента массива

Значение будет изменено. Чтобы вам было понятнее, рассмотрим следующий пример.

В этом примере мы создали числовой массив из пяти элементов. После этого использовали цикл foreach для отображения значений элементов.

Затем создали еще один цикл foreach , где перед $value_of_element добавляется « & «. Внутри фигурных скобок присваиваем новые значения элементам массива.

Чтобы увидеть разницу до и после присвоения новых значений, массив отображается с помощью функции print_r() .

Цикл foreach PHP - примеры изменения значения элемента массива

Посмотреть демо-версию и код

Для чего используется цикл foreach PHP?

Цикл foreach PHP используется для работы с массивом. Он перебирает каждый его элемент.

Также можно использовать для работы с массивами цикл for . Например, используя свойство length , чтобы получить длину массива, а затем применить его в качестве оператора max . Но foreach делает это проще, так как он предназначен для работы с массивами.

Если вы работаете с MySQL , то для этого данный цикл подходит еще больше. Например, можно выбрать несколько строк из таблицы БД и передать их в массив. После этого, используя цикл foreach , перебрать все элементы массива с выполнением какого-либо действия.

Обратите внимание, что можно использовать цикл foreach с массивом или только с объектом.

Как применять цикл foreach PHP

В PHP существует два способа использовать цикл foreach PHP. Оба описаны ниже.

При этом нужно указать имя массива, а затем переменную $value .

Для каждой итерации значение текущего элемента присваивается переменной $value . После завершения итерации переменной присваивается значение следующего элемента. И так до тех пор, пока все элементы массива не будут перебраны.

  • Синтаксис второго метода ( PHP foreach as key value ):

Это подходит для ассоциативных массивов, в которых используются пары ключ / значение.

Во время выполнения каждой итерации значение текущего элемента будет присвоено переменной $value_of_element. Кроме этого ключ элемента присваивается переменной $key_of_element.

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

Пожалуйста, оставляйте свои мнения по текущей теме статьи. Мы крайне благодарны вам за ваши комментарии, подписки, отклики, дизлайки, лайки!

Читайте также: