首先,我有这个多维数组。
$array = array("user1" => array("name" => "Jason", "category" => "health"),
"user2" => array("name" => "Mechelle", "category" => "Politics"));
如何在不使用循环的情况下在相同的子数组对象上检索子数组的值?就像我想得到名为" name"的数组对象的值来自名为" category"的对象数组;具有健康价值。我的预期结果是" Jason"因为在数组中,数组对象名为" name"有价值的杰森'属于一个名为' category'的同一个子数组。值是"健康"。请提供任何帮助,想法,线索,建议和建议吗?
答案 0 :(得分:1)
你可以在没有显式循环的情况下完成。 array_filter
和array_reduce
来救援!以下假设您的初始数组将更大,并且可能包含多个具有“运行状况”类别的子数组。
$array = array(
"user1" => array("name" => "Jason", "category" => "health"),
"user2" => array("name" => "Mechelle", "category" => "Politics")
);
$healthUsers = array_filter($array, function($user) {
return $user["category"] === "health";
});
$names = array_reduce($healthUsers, function($carry, $user) {
$carry .= $user["name"] . " ";
return $carry;
});
echo $names . PHP_EOL;
array_filter
为我们提供了一个较小的数组,该数组仅包含具有“健康”类别的用户。
array_reduce
遍历该数组,提取每个用户的名称,并将其放在以空格分隔的字符串中。