获取多维数组中一个子数组或多个子数组之间的差异

Get the difference between one sub-Array or multiple sub-Arrays in a multidimensional Array

我有以下多维数组,如果该数组中只有一个或多个子数组,我想得到不同之处。

例如:

[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
                                        (
                                           [...]
                                        )
                                )
                        )
                )

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

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] 的值。

提前致谢!

假设你的最终维度总是作为一个 'value' 节点:

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

最明显的解决方案是更改生成 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']);
         }
    }
}