Как сделать значения ключами 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 для отображения значений элементов.
Затем создали еще один цикл foreach , где перед $value_of_element добавляется « & «. Внутри фигурных скобок присваиваем новые значения элементам массива.
Чтобы увидеть разницу до и после присвоения новых значений, массив отображается с помощью функции print_r() .
Посмотреть демо-версию и код
Для чего используется цикл 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.
Если вы работаете с числовыми массивами, то можно использовать первый метод, в котором не нужны ключи элементов.
Пожалуйста, оставляйте свои мнения по текущей теме статьи. Мы крайне благодарны вам за ваши комментарии, подписки, отклики, дизлайки, лайки!
Читайте также: