如何将
ksort
应用于 $counts
数组的每个元素?我的意思是简单地在二维数组的每一行上调用这个函数(不是递归)。
bool array_walk(array &$array, callable $funcname [,mixed $userdata = NULL])
我尝试过
array_walk
将标志 SORT_NUMERIC
作为用户数据传递。这给了我警告:
$counts = array();
$counts['group1'] = array(); // Keys are timestamps but as STRING
$counts['group2'] = array(); // Keys are timestamps but as STRING
// ...
// Array + operator does a key reordering here
$counts['group1'] += $dummyData;
$counts['group2'] += $dummyData;
// .. so sort array by keys
array_walk($counts, 'ksort', SORT_NUMERIC);
警告:ksort() 最多需要 2 个参数,给定 3 个。
第三个参数是什么?
来自 http://php.net/manual/en/function.array-walk.php
通常,funcname 采用两个参数。数组参数的 值是第一个,键/索引是第二个。
如果提供了可选的 userdata 参数,它将作为 回调函数名称的第三个参数。
如果您将二级键声明为字符串类型的整数,实际上并不重要,PHP 会自动将它们转换为整数。
这意味着在此场景中您可以省略 SORT_NUMERIC 或 SORT_NATURAL 标志。
至于通过引用修改二级按键,你有两个基本选择。
经典循环:(演示)
foreach ($counts as &$row) {
ksort($row);
}
带有匿名回调的函数迭代:(Demo)
array_walk($counts, fn(&$row) => ksort($row));