php中的2d多维数组到1d数组

时间:2011-08-02 14:57:57

标签: php multidimensional-array

只是想知道是否有人将2 dim数组转换为php中的一个dim数组。我还没有在php中找到明确的解释。任何建议都将不胜感激。

8 个答案:

答案 0 :(得分:7)

试试这个:

function array_2d_to_1d ($input_array) {
    $output_array = array();

    for ($i = 0; $i < count($input_array); $i++) {
      for ($j = 0; $j < count($input_array[$i]); $j++) {
        $output_array[] = $input_array[$i][$j];
      }
    }

    return $output_array;
}

答案 1 :(得分:6)

如果您从Query中获取值,这可能会对您有所帮助,您可以使用PHP 5.5中支持的数组函数

Story

说再见循环!享受智能代码。

答案 2 :(得分:1)

你的意思是这样吗?

$array = array(array('green', 'yellow', 'orange'), array('blue', 'black', 'white'));
$newarray = array();
foreach (array_values($array) as $value){
   $newarray[] = $value; 
}

答案 3 :(得分:1)

这取决于你需要什么,但是如果你想将你的二维阵列缩小到一条完整填充二维平面的1d曲线,你可能正在寻找空间索引或空间填充曲线。有一些着名的和不太知名的如z曲线,希尔伯特曲线,皮亚诺曲线或摩尔曲线。您可以使用L系统编写这样的曲线。

答案 4 :(得分:1)

试试这个:

function array_to1d($a) {
    $out = array();
    foreach ($a as $b) {
        foreach ($b as $c) {
            if (isset($c)) {
                $out[] = $c;
            }
        }
    }
    return $out;
}

请注意,它包含一个测试,以查看该值是否已设置(非空)。一个数组的transposition数组中包含不同长度的行将在某些单元格中具有空值,如果您尝试线性化这样的野兽,则此检查可能会有所帮助。

答案 5 :(得分:0)

矩形二维数组的解决方案确实很简单,但我遇到了一个问题:我的二维数组包含不同长度的一维数组,如:

myArray=array(

array(1, 2, 3, 4),

array(5, 6, 7),

array(8, 9)

);

我提出了更通用的解决方案,将任何2D阵列转换为1D:

function array2DTo1D($arr2D){
        $i=0; $j=0;
        $arr1D=array();
        while (isset($arr2D[$i][0])){
            while (isset($arr2D[$i][$j])){
                $arr1D[]=$arr2D[$i][$j];
                $j++;
            }
            $i++;$j=0;
        }
        return $arr1D;
    }

答案 6 :(得分:0)

PHP 5.3 之后,有一个名为Resource to learn

的新功能。
AF.request(...).responseDecodable(of: YourType.self) { response in
    // Handle response.
}

请注意,$data = [1,2,[3,4],5,[6,7,8],9]; $output = []; array_walk_recursive($data, function($val) use (&$output) { $output[] = $val; }); arrray_walk_recursive

$output将产生$output

答案 7 :(得分:0)

只要您在数组中有很多某物,而您只想要一个某物本身就可以代表它们,那么您的第一个想法应该是array_reduce()方式。

来自PHP文档:

array_reduce —使用回调函数将数组迭代地减少为单个值

对于2D => 1D数组转换,某物 array ;我们有很多数组,但是我们只想要其中一个。

function array2dTo1d($array2d)
{
    return array_reduce($array2d, function($carry, $array) {
        return array_merge($carry, $array);
    }, []);
}

var_dump(array2dTo1d(
    [
        [23423, 5454, 567],
        [4565, 687],
    ]
));

结果:

array(5) {
  [0] =>
  int(23423)
  [1] =>
  int(5454)
  [2] =>
  int(567)
  [3] =>
  int(4565)
  [4] =>
  int(687)
}