【问题标题】:Get the difference between one sub-Array or multiple sub-Arrays in a multidimensional Array获取多维数组中一个子数组或多个子数组之间的差异
【发布时间】:2017-04-09 16:22:30
【问题描述】:

我有以下多维数组,如果该数组中只有一个子数组或多个子数组,我想得到差异。

例如:

  • 在数组 [1] 中只有一个子数组 [示例]
  • 在数组 [2] 中有两个子数组 [示例]

[content] => Array
        (
            [...]
            [1] => Array
                (
                    [example] => Array
                        (
                            [value] => GET THIS
                            [attr] => Array
                                (
                                  [...]
                                )
                        )
                )
            [2] => Array
                (
                    [example] => Array
                        (
                            [0] => Array
                                (
                                    [value] => GET THIS
                                    [attr] => Array
                                        (
                                           [...]
                                        )
                                )
                            [1] => Array
                                (
                                    [value] => GET THIS
                                    [attr] => Array
                                        (
                                           [...]
                                        )
                                )
                        )
                )

现在要从我会尝试的第一个数组中获取 [值]:

foreach ($content as $example) {
    echo($content['example']['value']);
}

要从第二个数组中获取每个 [value],我会尝试:

foreach ($content as $example) {
    foreach ($example as $values) {
        echo($value['value']);
    }
}

到目前为止一切顺利,但我如何决定运行哪个函数?我错过了什么吗? 有没有可以帮助我的 if 语句?

类似:

if(multiple sub-arrays){
    // do first code example
} else {
    // do second code example
}

我只是想要一个方法来从数组中取出所有名为 [value] 的值。

提前谢谢你!

【问题讨论】:

  • 我阅读了您的问题两次,但仍然无法完全了解您要解决的问题是什么。你能举例说明你期望得到的最终结果吗?

标签: php arrays multidimensional-array sub-array


【解决方案1】:

假设您的最终维度始终作为“价值”节点:

function arrayIterate($array){
    foreach ($content as $example) {
        if(!isset($example['value'])){
            arrayIterate($example);
        }else{
            echo($example['value']);
        }
    }
}

【讨论】:

    【解决方案2】:

    最明显的解决方案是更改生成 content 数组的函数,以便它总是生成以下格式的子数组:

    [content] => Array
            (
                [...]
                [1] => Array
                    (
                        [example] => Array
                            (
                                [0] => Array
                                    (
                                        [value] => GET THIS
                                        [attr] => Array
                                            (
                                                [...]
                                            )
                                    )
                            )
                    )
                [2] => Array
                    (
                        [example] => Array
                            (
                                [0] => Array
                                    (
                                        [value] => GET THIS
                                        [attr] => Array
                                            (
                                               [...]
                                            )
                                    )
                                [1] => Array
                                    (
                                        [value] => GET THIS
                                        [attr] => Array
                                            (
                                               [...]
                                            )
                                    )
                            )
                    )
    

    但如果您没有这样的选项 - 请使用简单的检查:

    foreach ($content as $item) {
        // here check if your `$item` has an `value` subkey under `example` key
        if (array_key_exists('value', $item['example'])) {
             echo($item['example']['value']);
        } else {
             foreach ($item['example'] as $values) {
                 echo ($values['value']);
             }
        }
    }
    

    【讨论】:

    • 非常感谢!是的,我无法更改我的构造函数。所以这是我搜索的解决方案:)
    猜你喜欢
    • 2021-07-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多