Php 按数组键顺序对位于另一个数组内部的数组进行排序
我将网格导出到xls,我有一个数组$data,它保存数字数组中的信息,如: 数组Php 按数组键顺序对位于另一个数组内部的数组进行排序,php,arrays,sorting,multidimensional-array,Php,Arrays,Sorting,Multidimensional Array,我将网格导出到xls,我有一个数组$data,它保存数字数组中的信息,如: 数组 ( [0]=>数组 ( [Field1]=>“值” [Field2]=>“不同的值” [Field3]=>“另一个值” ) ),其中[0]是网格的第一行(网格最多可以有10k行,也可以只有3行) 但是用户可以更改字段的顺序或添加更多字段(甚至隐藏网格上的字段),因此我有另一个数组,它精确地保存了哪些字段是可见的,以及它们的当前顺序“$currentOrder”(两个数组-在$data和$currentOrder中的
(
[0]=>数组
(
[Field1]=>“值”
[Field2]=>“不同的值”
[Field3]=>“另一个值”
)
)
,其中[0]是网格的第一行(网格最多可以有10k行,也可以只有3行)
但是用户可以更改字段的顺序或添加更多字段(甚至隐藏网格上的字段),因此我有另一个数组,它精确地保存了哪些字段是可见的,以及它们的当前顺序“$currentOrder”(两个数组-在$data和$currentOrder中的数字数组-具有相同的密钥数量和名称)。
我一直很难进入数值数组并将其字段排序为$currentOrder(并将值更改为右字段)
如果我的$currentOrder是
数组
(
[Field3]=>“”
[Field1]=>“”
[Field2]=>“”
)
我的$data输出必须是
数组
(
[0]=>数组
(
[Field3]=>“另一个值”
[Field1]=>“值”
[Field2]=>“不同的值”
)
)
这应该可以满足您的需要。它用于根据
$current\u order
中的键顺序对$data
的每个元素重新排序
$data = array(array('Field1'=>'Value',
'Field2'=>'Different value',
'Field3'=>'Another value')
);
$currentOrder = array('Field3'=>'',
'Field1'=>'',
'Field2'=>'');
$output = array_map(function ($arr) use ($currentOrder) {
$newarr = array();
foreach (array_keys($currentOrder) as $key)
$newarr[$key] = $arr[$key];
return $newarr;
}, $data);
print_r($output);
输出:
Array
(
[0] => Array
(
[Field3] => Another value
[Field1] => Value
[Field2] => Different value
)
)
像这样使用:
foreach($urarr as $key => $val){
ksort($urarr[$key], SORT_NUMERIC);
}
你能更具体地说明你想要什么吗?还可以为$currentOrder数组和你想要的输出添加示例。你能提供一个输入和输出示例,这样我们就可以轻松地处理它。我的回答没有解决你的问题吗?如果没有,请提供更多信息以帮助解决此问题。否则,请参见