【问题标题】:How to use array_in with multidimensional array in php如何在php中使用array_in与多维数组
【发布时间】:2019-06-08 06:38:35
【问题描述】:

我有一个以下格式的数组

Array ([abc] => Array ( [0] => Array ( [abc_id] => 10 [status] => true ) [1] =>
Array ( [abc_id] => 11 [status] => true ) [2] => Array ( [abc_id] => 12 [status] => true ) ) 
[pqr] => Array ( ) [xyz] => Array ( [0] => Array ( [xyz_id] => 8 [status] => false )
[1] => Array ( [xyz_id] => 9 [status] => false ) ) [mno] => Array ( ) [def] => Array ( ) [unit_id] => 1)

我想检查整个数组中是否有 status = false 字。 我尝试使用 array_in 但无法成功。谁能给我一些适当的解决方案来解决上述问题?有没有其他方法可以检查数组是否在任何地方都包含 false。

【问题讨论】:

    标签: php


    【解决方案1】:

    您可以使用array_walk_recursive(),它将遍历多维数组的所有级别 - 但仅限叶节点。虽然这很好,因为这就是你想要的。

    这段代码有一个 found 标志和一个简单的函数,它检查标签和你之后的值的值,如果它们都匹配,则将标志设置为 true...

    $found = false;
    array_walk_recursive($aray, function ($item, $key) use (&$found) {
        if ( $key === "status" && $item == false) {
            $found = true;
        }
    });
    echo $found;
    

    【讨论】:

    • 嗨,@Nigel Ren 先生,您的代码正在运行,只需在 if 条件下将 '==' 替换为 '=== '。我已根据我的要求进行了一些更改,即。我必须根据条件返回一个值,当条件为真时,我发送成功,如果为假,则失败。所以我也使用了 else 部分。但是当我使用 else 部分时,它的工作方式如下 hi : hello :1 hi :1.
    • 这里是有变化的代码:$found = false; array_walk_recursive($output, function ($item, $key) use (&$found) { if ($key === "status" && $item == "false") { $found = true; echo "hello :" .$found; } else { echo "hi :".$found; }
    • 是的,完成了。先生,如果条件一旦获得第一个错误值,是否可以停止。我的意思是,如果整个数组中有 3 个错误值,那么一旦它与第一个匹配,我想给出消息失败假。如果整个数组中没有假而不是成功
    • 不幸的是,除非您抛出异常,否则我认为没有办法在第一场比赛中停止。 stackoverflow.com/questions/17853113/… 显示了如果你想看看的话。
    • 好的。谢谢我通过链接。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-14
    • 2011-10-23
    • 2018-07-31
    • 1970-01-01
    • 2023-04-10
    • 2015-09-16
    相关资源
    最近更新 更多