循环遍历多维数组并查找匹配值

时间:2014-07-31 09:12:16

标签: php if-statement for-loop multidimensional-array

我正在寻找一种循环遍历多维数组的方法,并且如果key master为true,则使用if(或simular)查找匹配值。

数组:

    Array
(
    [0] => Array
        (
            [namn] => Vardagsrum
            [IP] => 192.168.1.232
            [rincon] => RINCON_000E58A64F1601400
            [rincon_live] => RINCON_000E58A64F1601400
            [master] => 1
        )

    [1] => Array
        (
            [namn] => Badrum
            [IP] => 192.168.1.137
            [rincon] => RINCON_B8E937580A5801400
            [rincon_live] => RINCON_000E58A64F1601400
            [slave] => 1
        )

    [2] => Array
        (
            [namn] => Kök
            [IP] => 192.168.1.134
            [rincon] => RINCON_000E58F8C9E001400
            [rincon_live] => RINCON_000E58A64F1601400
            [slave] => 1
        )

)

如果我有一个主人=> true(在这种情况下是vardagsrum)我希望循环匹配所有slave =>真正的rincon_live值与主人rincon值相对应。

我不知道这是否有任何意义,但如果我有一个或多个主人,我想检查奴隶rincon对主人,看看哪些奴隶连接到哪个主人,然后做了什么。

感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

你可能想要使用2个循环。一个用于构建结构,另一个用于构建结构。快速模型(暂时不编写PHP):

<?php
$result = array();
foreach ($array as $item) {
    if (!isset($result[$item['rincon']])) {
        $result[$item['rincon']] = array(
            'master' => null,
            'slaves' => array(),
        );
    }
    if (isset($item['master']) && $item['master']) {
        // master
        $result[$item['rincon']]['master'] = $item;
    } else {
        // probably slave, might want to rewrite the else to an elseif
        $result[$item['rincon']]['slaves'][] = $item;
    }
}
?>

现在$result将包含一个数组,其中rincon作为键,其中的主/从类如下:

<?php
$result = array(
    'RINCON_000E58A64F1601400' => array(
        'master' => array(
            'namn' => 'foo',
            'IP' => '127.0.0.1',
            ...
        ),
        'slaves' => array(
            array(
                'namn' => 'foo',
                'IP' => '127.0.0.1',
                ...
            ),
            array(
                'namn' => 'bar',
                'IP' => '127.0.0.1',
                ...
            ),
        )
    )
)

我认为你知道如何循环