将多维数组转换为单一数组。

71

我有一个数组,它是多维的,但没有任何原因

/* This is how my array is currently */
Array
(
[0] => Array
    (
        [0] => Array
            (
                [plan] => basic
            )

        [1] => Array
            (
                [plan] => small
            )

        [2] => Array
            (
                [plan] => novice
            )

        [3] => Array
            (
                [plan] => professional
            )

        [4] => Array
            (
                [plan] => master
            )

        [5] => Array
            (
                [plan] => promo
            )

        [6] => Array
            (
                [plan] => newplan
            )

    )

 )

我想将这个数组转换成这种形式

/*Now, I want to simply it down to this*/
Array (
[0] => basic
[1] => small
[2] => novice
[3] => professional
[4] => master
[5] => promo
[6] => newplan
)

有什么方法可以实现这个?


1
有没有什么原因导致它是这样的?而不是改变数组,有没有一种方法可以在一开始就以不同的方式创建数组? - erisco
希望这对您有所帮助,$array=[ 0 => [ 0 => ['plan' => 'basic'], 1 => ['plan' => 'small'], 2 => ['plan' => 'novice'], 3 => ['plan' => 'professional'], 4 => ['plan' => 'master'], 5 => ['plan' => 'promo'], 6 => ['plan' => 'newplan'] ] ]; $arr=[]; array_walk_recursive($array, function($k){global $arr; $arr[]=$k;}); print_r($arr); - Piyush Sapariya
24个回答

-1

我用面向对象的方式完成了这个

$res=[1=>[2,3,7,8,19],3=>[4,12],2=>[5,9],5=>6,7=>[10,13],10=>[11,18],8=>[14,20],12=>15,6=>[16,17]];
class MultiToSingle{
public $result=[];
public function __construct($array){
    if(!is_array($array)){
        echo "Give a array";
    }
    foreach($array as $key => $value){
        if(is_array($value)){
            for($i=0;$i<count($value);$i++){
                $this->result[]=$value[$i];
            }  
        }else{
            $this->result[]=$value;
        }
    }
}
}

$obj= new MultiToSingle($res);
$array=$obj->result;
print_r($array);

-1
多维数组转换为单一数组,只需一行代码!!! 享受这段代码吧。
$array=[1=>[2,5=>[4,2],[7,8=>[3,6]],5],4];
$arr=[];
array_walk_recursive($array, function($k){global $arr; $arr[]=$k;});
print_r($arr);

...享受编程吧。


-2

将此保存为php文件,只需导入并使用single_array()函数

<?php
$GLOBALS['single_array']=[];
function array_conveter($array_list){
    if(is_array($array_list)){
        foreach($array_list as $array_ele){
            if(is_array($array_ele)){
                array_conveter($array_ele);
            }else{
                array_push($GLOBALS['single_array'],$array_ele);
            }
        }
    }else{
        array_push($GLOBALS['single_array'],$array_list);
    }
}
function single_array($mix){
    foreach($mix as $single){
        array_conveter($single);
    }return $GLOBALS['single_array'];
    $GLOBALS['single_array']=[];
}
/* Example convert your multi array to single  */
$mix_array=[3,4,5,[4,6,6,7],'abc'];
print_r(single_array($mix_array));

?>

-2

如果使用PHP版本7.4及以上

$users = [
    [
        'Ahmed',
        'Mohammed',
    ],
    [
        'Saeed',
        'Rami',
        'Haider',
    ],
];

$admin = array_merge(...$users);

Nope - mickmackusa

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