#php
#php
Вопрос:
Я хочу сохранить массив ключей и использовать его как индекс, чтобы вернуться к соответствующему значению в исходном массиве. Вот пример для иллюстрации.
$myArray = array("foo" => array("bar" => "Hello"));
ручной способ добраться до «Привет» был бы
$helloString = $myArray["foo"]["bar"];
но я хочу гибкий способ сделать это для массивов с N количеством ключей
что-то вроде
$keys = array("foo","bar");
$helloString = $myArray[$keys]; //doesn't work but hopefully shows my intent
Есть ли способ сделать это без использования eval()?
Комментарии:
1. Нет встроенных способов делать такие вещи. Вы должны сделать это сами
2. Напишите функцию, которая принимает массив ключей и получает значение.
Ответ №1:
Я думаю, вы могли бы сделать что-то вроде этого:
<?php
$myArray = array("foo" => array("bar" => "Hello"));
$keys = array("foo","bar");
$item = $myArray;
foreach($keys as $k) {
$item = $item[$k];
}
echo $item; //Hello
?>
Или вставить его в функцию:
function getValue($array, $keys) {
foreach($keys as $k)
$array = $array[$k];
return $array;
}
Комментарии:
1. Не беспокойтесь, рад, что смог помочь
Ответ №2:
На самом деле не понимаю, но пытаюсь :
$keys = array("foo","bar");
$helloString = $myArray[$keys[0]][$keys[1]];
Ответ №3:
Вы даже можете попробовать это также
$myArray = array("foo" => array("bar" => "Hello"));
$keys = array("foo","bar");
function getval($myArray, $keys){
$temp = $myArray[$keys[0]];
if(!is_array($temp)){
return $temp;
}
else
{
array_splice($keys,0,1);
return getval($temp, $keys);
}
}
//Here you go
echo getval($myArray, $keys);