我将网格导出到xls,我有一个数组$ data,它在一个数字数组中保存信息,例如:
数组
(
[0] =>数组
(
[Field1] =>“值”
[Field2] =>“不同的值”
[Field3] =>“另一种情况”
)
)
其中[0]是网格的第一行(并且网格最多可包含1万行或3条线)
但是用户可以更改字段的顺序或添加更多字段(甚至将其隐藏在网格中),因此我还有另一个数组,可以精确地显示哪些字段可见,其当前顺序为“ $ currentOrder”(这两个数组-$ data和$ currentOrder内部的数字-具有相同的键名和数量)。
我一直很难进入数字数组并像$ currentOrder一样对它的字段进行排序(并将值更改为正确的字段)
如果我的$ currentOrder是
Array
(
[Field3] =>“”
[Field1] =>“”
[Field2] =>“”
)
我的$ data输出必须是
数组
(
[0] =>数组
(
[Field3] =>“另一个值”
[Field1] =>“值”
[Field2] =>“不同的值”
)
)
答案 0 :(得分:0)
这应该做您想要的。它使用array_map
根据$data
中的键顺序对$current_order
的每个元素重新排序。
$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
)
)
答案 1 :(得分:0)
像它一样使用:-
foreach($urarr as $key => $val){
ksort($urarr[$key], SORT_NUMERIC);
}