Недавно у меня произошел взрыв мозга. Это всё виноваты функции Php и анализ чужого кода. Мне встретились 3 функции:list() ,array_values() и array_keys().
Инструкция по array_keys (http://www.php.su/array_keys) Она выбирает все ключи массива … в индексированный массив от нуля и по увеличению.
1 2 |
$array = array (0 => 100, "color" => "red"); print_r(array_keys ($array)); |
Результат:
Array
(
[0] => 0
[1] => color
)
Если взять и поместить в эту функцию ассоциативный массив с одним элементом.
1 2 |
$mas=array('media_id' => 'id'); print_r( array_keys($mas) ); |
То результатом работы функции будет:
Array
(
[0] => media_id
)
Инструкция по list().
Пример: имеем массив, состоящий из трех элементов:
1 2 3 |
$people[0] = "Иван"; $people[1] = "Николай"; $people[2] = "Петр"; |
Необходимо передать эти значения элементов массива, соответственно, трем переменным $Ivanov, $Sidorov, $Petrov:
1 |
list ($Ivanov,$Sidorov,$Petrov) = $people; |
Итог- у нас 3 переменных получили свои значения. для первой это Иванов для второй соответственно Николай и тд.
Если написать — без дополнительных переменных, то получаем результат в переменной $Ivanov будет
list ($Ivanov)= $people;
$Ivanov- тоже будет иван. Тут в эту переменную присвоилось первое значение из массива.
Возьмем пустую переменную
1 2 3 |
$myvalue=''; $mas=array('media_id' => 'id'); list($myvalue) = array_keys($mas); |
В результате получаем, что в $myvalue сидит первый ключ ассоциативного массива.
Что можно сделать с функция array_values()? Заменям в строке выше array_keys на array_values и получаем первое значение ассоциативного массива.
1 |
list($myvalue) = array_values($mas); |
Я думал, почему так сложно? Ведь можно было цикл запустить или же сместить указатель. Но это решение в одну строку.
Итог этой работы :+1 к level по Php.
Вообще-то в документации написано, что замену array_keys — можно сделать в цикле, но вот только зачем, если такая функция есть?