Есть ли способ ссылки на весь ключевой путь в одной переменной?
1) В некотором смысле, как это: $fruits[$variable]
, ответ нет, не.
Конечно, есть несколько способов, вы можете разделить один переменный $ в два или более, а затем использовать его часть separetely ($fruits[$part1][$part2]
)
Это общее решение:
function get_path($array, $path)
{
$value = $array;
$parts = explode("']['", trim($path, "[']"));
foreach($parts as $key)
{
$value = $value[$key];
}
return $value;
}
$fruits['apple']['name'] = 'macintosh';
$path = "['apple']['name']";
echo get_path($fruits, $path);
// output = 'macintosh'
2) Как отметил также, вы можете использовать "Eval", который не рекомендуется:
$fruits['apple']['name'] = 'macintosh';
$path = "['apple']['name']";
eval('echo $fruits' . $path . ';');
// output = 'macintosh'
3) Наконец, если вы хотите получить доступ к элементу массива с помощью ссылочной переменной, а затем просто:
$fruits['apple']['name'] = 'macintosh';
$path &= $fruits['apple']['name'];
echo $path; // output = 'macintosh'
$path = 'MSX';
echo $fruits['apple']['name']; // output = 'MSX'
и ссылки приходит на ум .. –
@vizvi Можете ли вы расширить немного по этому поводу? Благодарю. –
Вы можете позвонить: $ fruits2 = & fruits ['apple']; echo $ fruits2 ['name']; даст вам «macintosh» –