我有一个多维关联数组,其中包含一些元素
$data["status"] $data["response"]["url"] $data["entry"]["0"]["text"]
我有一个字符串:
$string = 'data["status"]'; $string = 'data["response"]["url"]'; $string = 'data["entry"]["0"]["text"]';
如何将字符串转换为变量以访问正确的数组元素?此方法需要在任何维度上处理任何数组.
PHP的变量变量将帮助你.您可以通过在变量前添加另一个美元符号来使用它们:
$foo = "Hello, world!"; $bar = "foo"; echo $$bar; // outputs "Hello, world!"
又快又脏:
echo eval('return $'. $string . ';');
当然,输入字符串需要首先进行清理.
如果你不喜欢快速和肮脏...那么这也会起作用,它不需要eval,这甚至让我感到畏缩.
但是,它确实对字符串格式做出了假设:
'http://www.testing.com' ); function extract_data($string) { global $data; $found_matches = preg_match_all('/\[\"([a-z]+)\"\]/', $string, $matches); if (!$found_matches) { return null; } $current_data = $data; foreach ($matches[1] as $name) { if (key_exists($name, $current_data)) { $current_data = $current_data[$name]; } else { return null; } } return $current_data; } echo extract_data('data["response"]["url"]'); ?>
这可以通过更简单的方式完成.您所要做的就是考虑PHP提供的创建变量的函数.
$string = 'myvariable'; extract(array($string => $string)); echo $myvariable;
完成了!