Получить имена ассоциативного массива php

Получить имена ассоциативного массива php

Ассоциативные массивы представляют подвид массивов, в которых, в отличие от обычных массивов, в качестве ключа применяются строки.

При создании ассоциативного массива мы явным образом указываем ключ элемента, после которого идет оператор => и значение элемента. Например, создание ассоциативного массива с помощью функции array() :

$words = array("red" => "красный", "blue" => "синий", "green" => "зеленый");

Здесь создается массив $words из трех элементов. Например, первый элемент имеет ключ «red», а значение — «красный».

Создание аналогичного массива с помощью квадратных скобок:

$words = ["red" => "красный", "blue" => "синий", "green" => "зеленый"];

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

 "Berlin", "France" => "Paris", "Spain" => "Madrid"]; echo $countries["Spain"]; // Madrid echo "
"; $countries["Spain"] = "Barcelona"; echo $countries["Spain"]; // Barcelona ?>

Для добавления элемента с новым ключом в ассоциативный массив достаточно определить элемент с этим ключом:

$countries = ["Germany" => "Berlin", "France" => "Paris", "Spain" => "Madrid"]; $countries["Italy"] = "Rome"; // определяем новый элемент с ключом "Italy" echo $countries["Italy"]; // Rome

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

Для перебора ассоциативного массива применяется цикл foreach :

 "красный", "blue" => "синий", "green" => "зеленый"]; foreach($words as $english => $russian) < echo "$english : $russian
"; > ?>

Результат перебора массива:

red : красный blue : синий green : зеленый

Смешанные массивы

PHP позволяет использовать в одном массиве числовые и строковые индексы:

$data = [1=> "Tom", "id132" => "Sam", 56 => "Bob"]; echo $data[1]; // Tom echo "
"; echo $data["id132"]; // Sam

Источник

Получить имена ассоциативного массива php

key — Выбирает ключ из массива

Описание

key() возвращает индекс текущего элемента массива.

Список параметров

Возвращаемые значения

Функция key() просто возвращает ключ того элемента массива, на который в данный момент указывает внутренний указатель массива. Она не сдвигает указатель ни в каком направлении. Если внутренний указатель указывает вне границ массива или массив пуст, key() возвратит null .

Список изменений

Версия Описание
8.1.0 Вызов функции в объекте ( object ) объявлен устаревшим. Либо сначала преобразуйте объект ( object ) в массив ( array ) с помощью функции get_mangled_object_vars() , либо используйте методы, предоставляемые классом, реализующим интерфейс Iterator , например, ArrayIterator .
7.4.0 Экземпляры классов SPL теперь обрабатываются как пустые объекты, не имеющие свойств, вместо вызова метода Iterator с тем же именем, что и эта функция.
Читайте также:  Android java profiling tools

Примеры

Пример #1 Пример использования key()

$array = array(
‘fruit1’ => ‘apple’ ,
‘fruit2’ => ‘orange’ ,
‘fruit3’ => ‘grape’ ,
‘fruit4’ => ‘apple’ ,
‘fruit5’ => ‘apple’ );

// этот цикл выведет все ключи ассоциативного массива,
// значения которых равны «apple»
while ( $fruit_name = current ( $array )) if ( $fruit_name == ‘apple’ ) echo key ( $array ), «\n» ;
>
next ( $array );
>
?>

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

Смотрите также

  • current() — Возвращает текущий элемент массива
  • next() — Перемещает указатель массива вперёд на один элемент
  • array_key_first() — Получает первый ключ массива
  • foreach

User Contributed Notes 5 notes

Note that using key($array) in a foreach loop may have unexpected results.

When requiring the key inside a foreach loop, you should use:
foreach($array as $key => $value)

I was incorrectly using:
foreach( $array as $value )
$mykey = key ( $array );
>
?>

and experiencing errors (the pointer of the array is already moved to the next item, so instead of getting the key for $value, you will get the key to the next value in the array)

CORRECT:
foreach( $array as $key => $value )
$mykey = $key ;
>

A noob error , but felt it might help someone else out there .

Suppose if the array values are in numbers and numbers contains `0` then the loop will be terminated. To overcome this you can user like this

while ( $fruit_name = current ( $array ))

echo key ( $array ). ‘
‘ ;
next ( $array );
>

// the way will be break loop when arra(‘2’=>0) because its value is ‘0’, while(0) will terminate the loop

// correct approach
while ( ( $fruit_name = current ( $array )) !== FALSE )

echo key ( $array ). ‘
‘ ;
next ( $array );
>
//this will work properly
?>

Needed to get the index of the max/highest value in an assoc array.
max() only returned the value, no index, so I did this instead.

reset ( $x ); // optional.
arsort ( $x );
$key_of_max = key ( $x ); // returns the index.
?>

(Editor note: Or just use the array_keys function)

Make as simple as possible but not simpler like this one 🙂

In addition to FatBat’s response, if you’d like to find out the highest key in an array (assoc or not) but don’t want to arsort() it, take a look at this:

$arr = [ ‘3’ => 14 , ‘1’ => 15 , ‘4’ => 92 , ’15’ => 65 ];

Читайте также:  Html encoding with javascript

$key_of_max = array_search ( max ( $arr ) , $arr );

  • Функции для работы с массивами
    • array_​change_​key_​case
    • array_​chunk
    • array_​column
    • array_​combine
    • array_​count_​values
    • array_​diff_​assoc
    • array_​diff_​key
    • array_​diff_​uassoc
    • array_​diff_​ukey
    • array_​diff
    • array_​fill_​keys
    • array_​fill
    • array_​filter
    • array_​flip
    • array_​intersect_​assoc
    • array_​intersect_​key
    • array_​intersect_​uassoc
    • array_​intersect_​ukey
    • array_​intersect
    • array_​is_​list
    • array_​key_​exists
    • array_​key_​first
    • array_​key_​last
    • array_​keys
    • array_​map
    • array_​merge_​recursive
    • array_​merge
    • array_​multisort
    • array_​pad
    • array_​pop
    • array_​product
    • array_​push
    • array_​rand
    • array_​reduce
    • array_​replace_​recursive
    • array_​replace
    • array_​reverse
    • array_​search
    • array_​shift
    • array_​slice
    • array_​splice
    • array_​sum
    • array_​udiff_​assoc
    • array_​udiff_​uassoc
    • array_​udiff
    • array_​uintersect_​assoc
    • array_​uintersect_​uassoc
    • array_​uintersect
    • array_​unique
    • array_​unshift
    • array_​values
    • array_​walk_​recursive
    • array_​walk
    • array
    • arsort
    • asort
    • compact
    • count
    • current
    • end
    • extract
    • in_​array
    • key_​exists
    • key
    • krsort
    • ksort
    • list
    • natcasesort
    • natsort
    • next
    • pos
    • prev
    • range
    • reset
    • rsort
    • shuffle
    • sizeof
    • sort
    • uasort
    • uksort
    • usort
    • each

    Источник

    Ассоциативные массивы в PHP с примерами

    Массивы — способ хранить много похожей информации в одном месте.

    Массив проще всего представить как много подписанных коробок при переезде. В каждой коробке может лежать что угодно, например, числа, строки, объекты или даже другие коробки.

    Зачем нужны массивы

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

    Каждая коробка — элемент массива, номер под ней — индекс. То, что лежит внутри коробки — значение элемента.

    Как создать массив в PHP

    Чтобы создать массив в PHP напишем так:

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

    $my_array[1] = "Кухня" $my_array[2] = "Спальня" 

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

    $my_array[] = "Кухня" $my_array[] = "Спальня" 

    Нумерация в массивах

    По умолчанию счёт элементов массива идёт от нуля. То есть при обращении к коробкам нужно помнить, что у первой номер ноль, у второй — 1, и так далее.

    Здесь у второго элемента массива номер 1, а значение — 2

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

    $a[2] = 4; $a[4] = 16; $a[7] = 128; var_dump($a); 

    Этот код создаст массив из трёх элементов, с номерами 2, 4 и 7. Это легко проверить, если запустить его:

    array(3) < [2]=>int(4) [4]=> int(16) [7]=> int(128) > 

    Ассоциативные массивы в PHP

    Это такие же массивы, только у них индекс не число, а строка. Или что угодно ещё. Неудобно подписывать коробки при переезде по номерам — но если написать «Кухня», «Спальня» или «Гостиная», то сразу будет понятно, где что.

    Индекс в таком случае называется ключом — можно представить, что коробка закрыта на замок, а знание ключа поможет её открыть.

    Возьмём кухонную коробку, в которой лежат ложки, ножи и тарелки. Можно собрать её двумя способами. Так:

    $kitchen = array("Spoons"=>"35", "Knifes"=>"3", "Plates"=>"12"); 
    $kitchen['Spoons'] = "35"; $kitchen['Knifes'] = "3"; $kitchen['Plates'] = "12"; 

    Тогда если нам нужно будет понять, сколько тарелок лежит в коробке, воспользуемся кодом $kitchen[‘Plates’]; .

    Как вывести массив

    Чтобы вывести всё содержимое ассоциативного массива (в нашем случае, кухонной коробки), воспользуемся циклом foreach , который перебирает все элементы внутри массива.

    foreach($kitchen as $item => $item_count) < echo "Item=" . $item . ", Value text language-text">    

    А это код страницы foo.php на PHP, который выведет данные формы, полученные через POST . Здесь мы используем те самые значения атрибутов name , чтобы получить данные из соответствующих полей.

    То есть username , email и feedback — ключи, которые не отличаются от атрибута name в форме.

    Получение данных через $_GET

    Это такая же форма, как выше. Разница в method="get" — и чуть позже расскажу, в чём ещё.

    Код для получения значений формы через $_GET очень похож на прошлый — нужно заменить POST на GET .

    Значительная разница в том, что при загрузке страницы с таким кодом, в адресе страницы появятся данные из формы.

    С получением данных через GET и POST можно поэкспериментировать в первой главе курса «Знакомство с PHP».

    Получение массива из базы MySQL

    Ещё один частый случай использования ассоциативных массивов — при загрузке данных из базы данных. И если мы храним большую таблицу в базе, то может быть неудобно назначать столбцам номера. А вот чтобы у каждого элемента ключом стал заголовок — хорошая практика, так и запоминать будет удобнее.

    Допустим, у нас есть база данных в MySQL, мы подключаемся к ней, делаем запрос и получаем список пользователей.

    $dbc = mysqli_connect('localhost', 'root', 'password', 'my_users'); $query = "SELECT first_name FROM members"; $result = mysqli_query($dbc, $query); $data_array = array(); while ($row = mysqli_fetch_assoc($result))

    Разбираем код

    $dbc = mysqli_connect('localhost', 'root', 'password', 'my_users'); 

    Подключаемся к базе MySQL my_users по адресу localhost , от имени пользователя root , с паролем password .

    $query = "SELECT phone FROM members"; 

    Запрос — получить номера телефонов всех пользователей из таблицы members .

    $result = mysqli_query($dbc, $query); 

    Делаем запрос к базе с помощью существующей в PHP функции mysqli_query .

    Заводим пустой массив для полученных данных.

    while ($row = mysqli_fetch_assoc($result))  

    В этой строчке начинаем построчно считывать результаты.

    $data_array[$row['name']] = $row['value']; 

    И если результаты есть, записываем их в ассоциативный массив.

    Упражнения с массивами на PHP

    Попробуйте тренажёр, где можно без установки PHP, прямо в браузере написать код для реального сайта. И заодно разобраться с массивами, циклами и тем, как работает вся эта магия.

    «Доктайп» — журнал о фронтенде. Читайте, слушайте и учитесь с нами.

    Источник

Оцените статью