PHP循环遍历嵌套数组以查找特定值,然后获取该数组中获取匹配项的所有元素

时间:2017-10-12 17:43:58

标签: php arrays loops

我有以下多维数组:

Array
(
[0] => Array
    (
        [name] => Botline
        [description] => Kwese
        [parent_team_id] => 
        [company_id] => 10554
        [id] => 13482
        [external_id] => 13482
        [extras] => 
    )

[1] => Array
    (
        [name] => Books Boutique
        [description] => Kwese
        [parent_team_id] => 
        [company_id] => 10554
        [id] => 13483
        [external_id] => 13483
        [extras] => 
    )

[2] => Array
    (
        [name] => Sij Investments
        [description] => Kwese
        [parent_team_id] => 
        [company_id] => 10554
        [id] => 13484
        [external_id] => 13484
        [extras] => 
    )

[3] => Array
    (
        [name] => Steamcard Investments
        [description] => Kwese installations
        [parent_team_id] => 
        [company_id] => 10554
        [id] => 13549
        [external_id] => 13549
        [extras] => 
    )
)

我希望能够在数组中循环搜索一个嵌套数组,该数组的id等于“13484”。在我找到'id'后,我希望能够获取该数组中的所有元素并保存它们。

可能位于主数组中的嵌套数组的数量是未定义的,因此我无法创建获得具有匹配值的正确数组的预定方法。我怎样才能做到这一点?

3 个答案:

答案 0 :(得分:2)

假设您将多维数组命名为$someArrays并使用$savedArray来保存找到的数组

$savedArray = array();

foreach ($someArrays as $someArray) {
    if ($someArray['id'] == '13549') {
        $savedArray = $someArray;
        break;
    }
}

print_r($savedArray);

答案 1 :(得分:1)

无需循环,只需使用id重新索引,然后引用该元素。这假定id是唯一的:

$array  = array_column($array, null, 'id');
$result = $array[13484];

或者,如果您只需要一次:

$result = array_column($array, null, 'id')[13484];

答案 2 :(得分:0)

在这里你可以根据id和它的相关值

$array = [[

        'name' => 'Botline',
        'description' => 'Kwese',
        'parent_team_id' => '',
        'company_id' => '10554',
        'id' => '13482',
        'external_id' => '13482',
        'extras' => ''
]];

$id = [];

foreach ($array as $key => $value) {
    $id[$value['id']]=$value;
}

在此处分配给id之后,id的输出如下

echo "<pre>";
print_r($id);
echo "</pre>";


Array
(
    [13482] => Array
        (
            [name] => Botline
            [description] => Kwese
            [parent_team_id] => 
            [company_id] => 10554
            [id] => 13482
            [external_id] => 13482
            [extras] => 
        )

)
echo "<pre>";
print_r($id['13482']['name']);
echo "</pre>";