在 PHP 中从多维数组中移除父级数组

5
使用PHP如何将数组结果转换为以下方式:
 Array
    (
        [3] => Array
            (
                [15] => 15
                [16] => 16
                [17] => 17
                [18] => 18
                [19] => 19
            )

    )

如何将上述数组转换为以下格式:
 Array
        (
            [0] => 15
            [1] => 16
            [2] => 17
            [3] => 18
            [4] => 19
        )

将所有子元素附加到单独的数组中,然后从那里开始。我想使用 foreach。不确定是否最方便,但它可以工作。 - RepeaterCreeper
可能是Removing an outer array:的重复问题。 - Tom Udding
如果您不知道外部数组的索引并且使用PHP> 5.6,则可以使用array_merge(... $ array) - splash58
5个回答

6

array_values() 是你的好帮手;

假设你的数组存在一个名为 $array 的变量中;

$newArray = array_values($array[3]);

3

你应该使用RecursiveArrayIterator来移除父级数组

$arr = new RecursiveIteratorIterator(new RecursiveArrayIterator($multidimensional_array));
$new_arr = iterator_to_array($arr, false);

非常好用,甚至在PHP 5.3中也能正常工作。但是,由于某种原因,我无法将其作为函数使用。你有什么想法吗?似乎很简单,但是却不起作用。 - ctrlbrk

2

如果您有多个子数组,请尝试使用此方法,它将会奏效。

$arr = array(3 =>
        array
          ( 
           15  => 15,
           16 => 16,    
           17    => 17,  
           18    => 18,  
           19    => 19
          )
        );
    $new = array();
        foreach ($arr as $v){
            $new = array_merge($new , array_values($v)) ;
        }
echo "<pre>"; print_r($new);

Working Demo


1

我还没有测试过,但应该符合你的要求。

<?php
$parent array = array(); // The array which you want to change
$result_array = array(); // The array that will hold the results
foreach( $parent_array as $child_array )
{
    if( is_array( $child_array ) )
    {
        foreach( $child_array as $element )
        {
            $result_array[] = $element
        }
    }
}
echo '<pre>';
print_r($result_array);
echo '</pre>';
?>

0

这很简单,你只需要将包含变量的数组分配给一个索引的值即可...

<?php

/* build list */
for($i=15;$i<=19;$i++)
    $b[$i] = $i;
$a[3] = $b;

var_export($a);

/* make array smaller again */
$a = $a[3];

var_export($a);

/* reindexing, just values */
$a = array_values( $a );

var_export($a);

?>

重新索引部分由内置函数完成,还可以查看php.net上与数组相关的链接函数,您可以使用它们轻松地进行大量操作。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接