基于价值的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!

)

回答:

几种可能获得单个项目匹配特定的键:

  1. 迭代主阵列,当你到一个具有正确的密钥一个孩子停止:

    $object = (function($key) use($main_array) { 

    foreach ($main_array as $object) {

    if ($object['key'] == $key) return $object;

    }

    })('business');

    (本例中使用匿名函数,但是你可以使用一个简单的foreach循环,打破你的时候找到问题的关键)

  2. 重新编制主阵列和键查找子:

    $indexed = array_column($main_array, null, 'key'); 

    $object = $indexed['business'];

  3. 使用密钥作为指数乞讨构建阵列与...一起。使用字符串键不排除数组元素是可以包含多个值的其他数组。

    $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

回到顶部