PHP 使用字符串作为数组键模式
Posted
技术标签:
【中文标题】PHP 使用字符串作为数组键模式【英文标题】:PHP use string as array key pattern 【发布时间】:2018-11-09 21:51:51 【问题描述】:我需要一个字符串来将它用于数组模式以通过它来查找值。 例如
$test = ['test','test2' => ['test3','test4' => ['test5']]];
$pattern = "['test2']['test4']"
$response = $test$pattern <- search
给它一个解决方法?
【问题讨论】:
不知道你究竟想在这里做什么 我想在这种情况下作为这种模式的响应 test5 真的需要一个模式吗?可以$pattern = ['test2', 'test4']
吗?
@Barmar 我认为如果我们都尽最大努力假装eval()
不存在,这个世界将会变得最好。
现在看看你做了什么@Barmar
【参考方案1】:
基于另一个问题:Using a string path to set nested array data
function GetValueFromPattern($arr, $pattern)
$exploded = explode(".",$pattern);
$temp = $arr;
foreach($exploded as $key)
if(key_exists($key, $temp))
$temp = $temp[$key];
else
return ["status" => false];
return ["status" => true, "response" => $temp];
$test = ['test','test2' => ['test3'=>"a",'test4' => ['test5']]];
$pattern = "test2.test3";
$response = GetValueFromPattern($test, $pattern);
if ($response["status"])
echo $response["response"];
else
echo "Error!";
【讨论】:
你肯定想折腾if(key_exists($key, $temp);) else /* error stuff */
请注意,如果您想分配给结果,您只需要使用引用。否则你可以使用正常的赋值。
是的,您绝对不想从“getter”返回引用并在以后意外修改数组。
你是对的,我的错误。问题解决了,我将算法插入到一个新函数中来处理这个过程。以上是关于PHP 使用字符串作为数组键模式的主要内容,如果未能解决你的问题,请参考以下文章