Php 重新组织数组,将索引移动到特定位置
我有任意数量的数组,所有数组都包含相同格式的数据。有两个单独的for循环,通过两个单独的SQL查询结果循环,并将它们添加到两个单独的数组中 一旦我在两个数组中都有了所有的信息,我就会遍历它们并将它们连接在一起,形成一个更长的数组 但是,当我将此数组写入csv文件时,数组中的信息需要有序,以便它将其写入csv文件。我该怎么做 阵列1Php 重新组织数组,将索引移动到特定位置,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]
[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=>”;
是的,我刚刚意识到哈哈。谢谢