Php 重新组织数组,将索引移动到特定位置

Php 重新组织数组,将索引移动到特定位置,php,arrays,sorting,for-loop,Php,Arrays,Sorting,For Loop,我有任意数量的数组,所有数组都包含相同格式的数据。有两个单独的for循环,通过两个单独的SQL查询结果循环,并将它们添加到两个单独的数组中 一旦我在两个数组中都有了所有的信息,我就会遍历它们并将它们连接在一起,形成一个更长的数组 但是,当我将此数组写入csv文件时,数组中的信息需要有序,以便它将其写入csv文件。我该怎么做 阵列1 [1] => Array ( [0] => 2017-07-21 00:00:00 [1]

我有任意数量的数组,所有数组都包含相同格式的数据。有两个单独的for循环,通过两个单独的SQL查询结果循环,并将它们添加到两个单独的数组中

一旦我在两个数组中都有了所有的信息,我就会遍历它们并将它们连接在一起,形成一个更长的数组

但是,当我将此数组写入csv文件时,数组中的信息需要有序,以便它将其写入csv文件。我该怎么做

阵列1

[1] => Array
        (
            [0] => 2017-07-21 00:00:00
            [1] => Foo
            [2] => Bar
            [3] => 32.63
            [4] => 18.36
            [5] => 98.46
        )

    [2] => Array
        (
            [0] => 2017-07-21 00:00:00
            [1] => Foo
            [2] => Bar
            [3] => 29.74
            [4] => 148.68
            [5] => 178.42
        )

     //etc
[1] => Array
        (
            [0] => 2017-07-21 00:00:00
            [1] => Foo
            [2] => Bar
            [3] => 32.63
            [4] => 18.36
            [5] => 98.46
            [6] => RTGH707321222
            [7] => THIS
            [8] => IS
            [9] => TEXT
        )

    [2] => Array
        (
            [0] => 2017-07-21 00:00:00
            [1] => Foo
            [2] => Bar
            [3] => 29.74
            [4] => 148.68
            [5] => 178.42
            [6] => RTGH707321220
            [7] => SOME
            [8] => WORDS
            [9] => HERE
        )

     //etc
阵列2

[1] => Array
        (
            [0] => RTGH707321222
            [1] => THIS
            [2] => IS
            [3] => TEXT
        )

    [2] => Array
        (
            [0] => RTGH707321220
            [1] => SOME
            [2] => WORDS
            [3] => HERE
        )

    //etc
将阵列连接在一起

array_walk($array2, function($values, $key) use (&$array1) {

        $array1[$key] = array_merge($array1[$key], $values);
    } );
阵列合并后-打印($array1)

所以这很有效。但是,我想移动其中一些索引,使它们处于不同的顺序。我已经研究了array_splice(),但我不确定这是否是正确的方法

我希望它看起来像什么

[1] => Array
            (
                [0] => 2017-07-21 00:00:00
                [1] => RTGH707321222
                [2] => TEXT
                [3] => THIS
                [4] => 18.36
                [5] => 98.46
                [6] => Foo
                [7] => 32.63
                [8] => IS
                [9] => Bar
            )

        //etc

正如你所看到的,所有的信息都是一样的。这些值刚刚被移动到不同的索引中。如何对数组进行排序,使其看起来像上面所示。谁能给我指出正确的方向吗?谢谢。

我们可以在这里使用交换技术,比如

<?php
    foreach ($arr as $key => $value) {
        $swap = $value[1];
        $arr[$key][1] = $value[6];
        $arr[$key][6] = $swap;
        $swap = $value[9];
        $arr[$key][9] = $value[2];
        $arr[$key][2] = $swap;
        $swap = $value[7];
        $arr[$key][7] = $value[3];
        $arr[$key][3] = $swap;
    }
    print_r($arr);
?>


$arr
是您的阵列。

我们可以在这里使用交换技术,例如

<?php
    foreach ($arr as $key => $value) {
        $swap = $value[1];
        $arr[$key][1] = $value[6];
        $arr[$key][6] = $swap;
        $swap = $value[9];
        $arr[$key][9] = $value[2];
        $arr[$key][2] = $swap;
        $swap = $value[7];
        $arr[$key][7] = $value[3];
        $arr[$key][3] = $swap;
    }
    print_r($arr);
?>


$arr
是您的数组。

这是一种更简单的方法,使用
array\u replace()
和排序数组

没有额外的循环,没有临时交换变量

代码:()


这是一种使用
array\u replace()
和排序数组的简单方法

没有额外的循环,没有临时交换变量

代码:()


你改变指标的逻辑是什么?我还没有改变任何东西。这就是我需要帮助的原因。你改变指标的逻辑是什么?我还没有改变任何东西。这就是为什么我需要帮助它说出乎意料的[170$order=[0=>'',6=>'',9=>'',7=>'',4=>'',5=>'',1=>'',3=>'',8=>'',2=>''];@IbrahimHafiji你在用PHP>=5.4吗?如果不是用
$order=array(0=>'',6=>'',9=>'',7=>'',4=>'',5=>,1=>,3=>,8=>'‌​',2=>'';
是的,我刚刚意识到哈哈。ThanksIt说出乎意料的[在第170行$order=[0=>'',6=>'',9=>'',7=>'',4=>'',1=>'',3=>'',8=>'',2=>'];@IbrahimHafiji你在使用PHP>=5.4吗?如果不是用
$order=array(0=>,6=>,9=>,7=>,4=>'',5=>,1=>,3=>'',8'>'‌​',2=>”;
是的,我刚刚意识到哈哈。谢谢