繁体   English   中英

在具有多个相同键名的多维数组中搜索值

[英]search a value in multi dimensional array that has multiple same key names

想象你有这个数组

Array(
[0] => Array
    (
        ['id'] => 12,
        ['filter'] => Array
            (
                ['resource'] => Array
                    (
                        ['id'] => 44444
                    )

            ),

        ['filtervalue'] => Array
            (
                ['resource'] => Array
                    (
                        ['id'] => 12345
                    )

            )

    ),
[1] => Array
    (
        ['id'] => 24,
        ['filter'] => Array
            (
                ['resource'] => Array
                    (
                        ['id'] => 44444
                    )

            ),

        ['filtervalue'] => Array
            (
                ['resource'] => Array
                    (
                        ['id'] => 12
                    )

            )

    ),
[2] => Array
    (
        ['id'] => 25,
        ['filter'] => Array
            (
                ['resource'] => Array
                    (
                        ['id'] => 55555
                    )

            ),

        ['filtervalue'] => Array
            (
                ['resource'] => Array
                    (
                        ['id'] => 123
                    )

            )

    ),
[3] => Array
    (
        ['id'] => 26,
        ['filter'] => Array
            (
                ['resource'] => Array
                    (
                        ['id'] => 55555
                    )

            ),

        ['filtervalue'] => Array
            (
                ['resource'] => Array
                    (
                        ['id'] => 12
                    )

            )

    )
);

我只想知道这两个值是否存在:

如果filter-> resource-> id == 55555并且if filtervalue-> resource-> id == 12,则在此数组中它们存在于[3]中,因此为true

如果我要搜索是否filter-> resource-> id == 44444并且if filtervalue-> resource-> id == 123

那么它会给出错误,尽管[0]中存在4444,[2]中存在123和123

我可能想得太多了

您可以使用foreach循环实现此功能,并检查所需条件并获取其索引:

$index = '';
foreach ($records as $key => $record) {
    if (($record['filter']['resource']['id'] == 55555) && ($record['filtervalue']['resource']['id'] == 12)) {
        $index = $key;
        break;
    }
}
$found = false;
foreach ($yourArray as $item) {
    if ($item['filter']['resource']['id'] == $someVal && $item['filtervalue']['resource']['id'] == $anotherVal) {
        $found = true;
        break;
    }
}
var_dump($found);
$filters = []; // Your array
$r = 44444;
$v = 123;
foreach( $filters as $f ){
    if( $r === (int) $f ['filter']['resource']['id'] ){
      $r = true;
    }
    if( $v === (int) $f ['filtervalue']['resource']['id'] ){
      $v = true;
    }
    if( TRUE === $r && TRUE === $v ){
      echo "FOUND!!!\n";
      break;
    }
}

i am probobly overthinking the problem -绝对可以!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM