php - 如何在一个数组中将键与子键合并

时间:2016-10-21 09:04:05

标签: php arrays

我有一个这样的数组:

array(
    (int) 0 => (int) 1,
    (int) 1 => (int) 3,
    (int) 2 => (int) 12,
    (int) 3 => (int) 5,
    (int) 4 => (int) 8,
    (int) 5 => (int) 10,
    (int) 6 => (int) 15
)

将键与子键合并而不考虑值的最佳方法是什么?得到类似的东西?

df

3 个答案:

答案 0 :(得分:0)

$newArray = [];

$arrays = array(
    (int) 1 => array(
        (int) 3 => 'value',
        (int) 12 => 'value'
    ),
    (int) 5 => array(
        (int) 8 => 'value',
        (int) 10 => 'value',
        (int) 15 => 'value'
    )
)

foreach($arrays as $key => $array) {
    $newArray[] = $key;
    foreach($array as $key => $item) {
        $newArray[] = $key;
    }
}

答案 1 :(得分:0)

您可以将array_walk_recursive()用于php 5及更高版本。

//$oldArray = your array
$newArray = [];

function build_array($item,$key){

    global $newArray;

    $newArray[] = $key;

}
array_walk_recursive($oldArray,'build_array');
$newArray = array_merge(array_keys($oldArray),$newArray); //needed for the first keys (1,5) as Jory Geerts correctly pointed out.

答案 2 :(得分:0)

使用array_keysarray_merge函数的简短解决方案:

$keys = [];
foreach ($arr as $k => $v) {  // $arr is your initial array
    $keys[] = $k;
    if (is_array($v)) $keys = array_merge($keys, array_keys($v));
}

print_r($keys);

输出:

Array
(
    [0] => 1
    [1] => 3
    [2] => 12
    [3] => 5
    [4] => 8
    [5] => 10
    [6] => 15
)