直接从其子数组中获取对象数组的值

时间:2016-05-06 00:48:54

标签: php arrays multidimensional-array

首先,我有这个多维数组。

$array = array("user1" => array("name" => "Jason", "category" => "health"),
               "user2" => array("name" => "Mechelle", "category" => "Politics"));

如何在不使用循环的情况下在相同的子数组对象上检索子数组的值?就像我想得到名为" name"的数组对象的值来自名为" category"的对象数组;具有健康价值。我的预期结果是" Jason"因为在数组中,数组对象名为" name"有价值的杰森'属于一个名为' category'的同一个子数组。值是"健康"。请提供任何帮助,想法,线索,建议和建议吗?

1 个答案:

答案 0 :(得分:1)

你可以在没有显式循环的情况下完成。 array_filterarray_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遍历该数组,提取每个用户的名称,并将其放在以空格分隔的字符串中。