如何将三维数组更改为一维数组(PHP)

如何将三维数组更改为一维数组(PHP),php,Php,我有一个三维阵列。我想修正一个函数,将其转换为一维数组,并保留上一个子键。我该怎么做 array(2) { [0]=> array(2) { [0]=> array(2) { ["id"]=> string(1) "4" ["assignedlessons"]=> string(2) "69" } [1]=> array(2) { ["id"]=> string(1) "4

我有一个三维阵列。我想修正一个函数,将其转换为一维数组,并保留上一个子键。我该怎么做

array(2) {
[0]=>
 array(2) {
  [0]=>
   array(2) {
     ["id"]=>
     string(1) "4"
     ["assignedlessons"]=>
     string(2) "69"
   }
  [1]=>
   array(2) {
     ["id"]=>
     string(1) "4"
     ["assignedlessons"]=>
     string(3) "308"
   }
}
array(2) {
  [0]=>
   array(2) {
     ["id"]=>
     string(1) "10"
     ["assignedlessons"]=>
     string(2) "50"
   }
  [1]=>
   array(2) {
     ["id"]=>
     string(1) "10"
     ["assignedlessons"]=>
     string(2) "91"
    }
  }
}
我想将其转换为如下结构:

   array(0) {
     ["id"]=>
     string(1) "4"
     ["assignedlessons"]=>
     string(2) "69"
   }

   array(1) {
     ["id"]=>
     string(1) "4"
     ["assignedlessons"]=>
     string(3) "308"
   }

   array(2) {
     ["id"]=>
     string(1) "10"
     ["assignedlessons"]=>
     string(2) "50"
   }
   array(3) {
     ["id"]=>
     string(1) "10"
     ["assignedlessons"]=>
     string(2) "91"
    }
我拥有的是这个功能:

function toSingleDimentionalArray($array){
 $final = array();
 foreach($array as $value){
   foreach($array as $key => $val){
      $final[]['id'] = $val['id'];  
      $final[]['assignedlessons'] = $val['assignedlessons'];
    }

 }
 return $final;
}
但它只会返回这样的结果:

array(19648) {
  [0]=>
  array(1) {
  ["id"]=>
 string(1) "4"
}
  [1]=>
  array(1) {
  ["assignedlessons"]=>
  string(2) "69"
}
  [2]=>
  array(1) {
  ["id"]=>
  string(1) "4"
}
  [3]=>
  array(1) {
  ["assignedlessons"]=>
  string(3) "308"
 }
这会奏效的

function toNotActuallyASingleDimensionalArray($array) {
    $final = array();
    foreach($array as $subarray) {
        foreach($subarray as $val) {
            $final[] = $val;
        }
    }
    return $final;
}


它适用于n维数组

到目前为止您尝试了什么?这是一个非常直接的循环,应该不会太难实现。看看这些:您想要的结果不是一个一维数组注意
array(3)
表示“长度为3的数组”。下次,使用
print\r()
调试变量内容。
$final_array = array();

foreach($array as $sub_array)
{
  foreach($sub_array as $temp_array)
  {
    $final_array[] = $temp_array;
  }
}
function simplify_array($array, $first_level=true) {
    foreach($array as $key => $value) {
        $last_level = !is_array($value);
        if($last_level) {
            return $array;
        }else if($first_level) {
            $return[] = simplify_array($value, false);
        }else{
            return simplify_array($value, false);
        }
    }
    return $return;
}


print_r(simplify_array($arr));