基于价值的PHP
我工作的一个项目,我有一个结构化的对象像这样从多维数组得到孩子基于“关键”参数。 我想要做什么是“提取”嵌套数组一样基于价值的PHP
$home_array=["key"=> "home","value":=> "Go Home!"]
等为“业务”和“其他”。在JavaScript中,我可以使用jQuery或下划线来获得我想要的,是否有一个PHP方法来实现这一点,或者什么来模拟多维数组/对象中的“where”子句?
thak你提前
回答:
你可以很容易地转换,你必须有“关键”列是使用array_column()
主要指标数组...
$main_array= [ [
"key"=> "home",
"value"=> "Go Home!"
],
[
"key"=> "business",
"value"=> "Go to Work!"
],
[
"key"=> "other",
"value"=> "Go where you want!"
]
];
$out = array_column($main_array, null, "key");
print_r($out['business']);
输出...
Array (
[key] => business
[value] => Go to Work!
)
回答:
几种可能获得单个项目匹配特定的键:
迭代主阵列,当你到一个具有正确的密钥一个孩子停止:
$object = (function($key) use($main_array) {
foreach ($main_array as $object) {
if ($object['key'] == $key) return $object;
}
})('business');
(本例中使用匿名函数,但是你可以使用一个简单的foreach循环,打破你的时候找到问题的关键)
重新编制主阵列和键查找子:
$indexed = array_column($main_array, null, 'key');
$object = $indexed['business'];
使用密钥作为指数乞讨构建阵列与...一起。使用字符串键不排除数组元素是可以包含多个值的其他数组。
$main_array= [
'home' => ["value"=> "Go Home!"],
'business' => ["value"=> "Go to Work!"],
'other' => ["value"=> "Go where you want!"]
];
方法2和3要求他们关键是独一无二的。方法1不会,但它只会返回它找到的第一个实例。
如果你确实有一个密钥的多个实例,你可能需要array_filter
。这将更像您提到的“where子句”。
$key = 'home'; $filtered = array_filter($main_array, function($item) use ($key) {
return $item['key'] == $key;
});
这将返回多个项目而不是一个。
以上是 基于价值的PHP 的全部内容, 来源链接: utcz.com/qa/265920.html