Php 多维数组列的更改顺序
我在php中有一个多维数组,需要将列顺序更改为第二个简单数组的顺序 编辑: 虽然这两个数组在值和键方面是相同的,但我使用它与phpexcel一起导出,它会按照给定数组的顺序生成xls文件。我需要更改顺序,使xls文件看起来像那样 该数组如下所示:Php 多维数组列的更改顺序,php,multidimensional-array,multiple-columns,Php,Multidimensional Array,Multiple Columns,我在php中有一个多维数组,需要将列顺序更改为第二个简单数组的顺序 编辑: 虽然这两个数组在值和键方面是相同的,但我使用它与phpexcel一起导出,它会按照给定数组的顺序生成xls文件。我需要更改顺序,使xls文件看起来像那样 该数组如下所示: Array ( [0] => Array ( [name] => Name1 [sn] => Sn1 [somenumber] =>
Array
(
[0] => Array
(
[name] => Name1
[sn] => Sn1
[somenumber] => 43234234
)
[1] => Array
(
[name] => Name2
[sn] => Sn2
[somenumber] => 4564564
)
[2] => Array
(
[name] => Name3
[sn] => Sn3
[somenumber] => 6575647456745
)
)
Array
(
[0] => Array
(
[sn] => Name1
[name] => Sn1
[somenumber] => 43234234
)
[1] => Array
(
[sn] => Name2
[name] => Sn2
[somenumber] => 4564564
)
[2] => Array
(
[sn] => Name3
[name] => Sn3
[somenumber] => 6575647456745
)
)
第二个数组是:
Array
(
[0] => sn
[1] => name
[2] => somenumber
)
我需要的是基于第二个数组排序的第一个数组,因此它看起来如下所示:
Array
(
[0] => Array
(
[name] => Name1
[sn] => Sn1
[somenumber] => 43234234
)
[1] => Array
(
[name] => Name2
[sn] => Sn2
[somenumber] => 4564564
)
[2] => Array
(
[name] => Name3
[sn] => Sn3
[somenumber] => 6575647456745
)
)
Array
(
[0] => Array
(
[sn] => Name1
[name] => Sn1
[somenumber] => 43234234
)
[1] => Array
(
[sn] => Name2
[name] => Sn2
[somenumber] => 4564564
)
[2] => Array
(
[sn] => Name3
[name] => Sn3
[somenumber] => 6575647456745
)
)
如果所有钥匙始终存在
// Make template array with correct order of keys
$template = array_flip($second);
foreach($array as &$x) {
// replace values in template
$x = array_replace($template, $x);
}
以下是对阵列进行排序的方法: $template数组:
//template array
$reference = array('sn', 'name', 'somenumber');
$array_to_sort = Array
(
"0" => Array
(
"somenumber" => "Name1",
"sn" => "Sn1",
"name" => "43234234"
),
"1" => Array
(
"sn" => "Name2",
"somenumber" => "4564564",
"name" => "Sn2"
),
"2" => Array
(
"sn" => "Name3",
"name" => "Sn3",
"somenumber" => "6575647456745"
)
);
$ordered_array = [];
foreach ($array_to_sort as $key => $value) {
$ordered_array[] = array_replace(array_flip($reference), $value);
}
print_r($ordered_array);
除非我遗漏了什么,否则你问题中的第一个和最后一个数组是相同的。使用
print\r
时它们的显示方式其实并不重要,也不应该如此,因为索引和值都是相同的,所以数组也是相同的。我使用这个数组在带有phpexcel的xls文件中导出。它根据键的顺序生成xls,我需要一个不同的顺序。正如你所说,数据是一样的。这很好,但是$x只包含数组中的最后一项。我是根据你的回答做这个的:$I=0;$I