Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/260.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 按数组键顺序对位于另一个数组内部的数组进行排序_Php_Arrays_Sorting_Multidimensional Array - Fatal编程技术网

Php 按数组键顺序对位于另一个数组内部的数组进行排序

Php 按数组键顺序对位于另一个数组内部的数组进行排序,php,arrays,sorting,multidimensional-array,Php,Arrays,Sorting,Multidimensional Array,我将网格导出到xls,我有一个数组$data,它保存数字数组中的信息,如: 数组 ( [0]=>数组 ( [Field1]=>“值” [Field2]=>“不同的值” [Field3]=>“另一个值” ) ),其中[0]是网格的第一行(网格最多可以有10k行,也可以只有3行) 但是用户可以更改字段的顺序或添加更多字段(甚至隐藏网格上的字段),因此我有另一个数组,它精确地保存了哪些字段是可见的,以及它们的当前顺序“$currentOrder”(两个数组-在$data和$currentOrder中的

我将网格导出到xls,我有一个数组$data,它保存数字数组中的信息,如:

数组

[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数组和你想要的输出添加示例。你能提供一个输入和输出示例,这样我们就可以轻松地处理它。我的回答没有解决你的问题吗?如果没有,请提供更多信息以帮助解决此问题。否则,请参见