Php 基于关键字对二级数组值进行排序
我试图根据特定关键字对第二级值进行排序。在这种情况下,关键字是红色的 如果我检查回调函数中的步骤,它似乎可以工作,但最终结果不变。它还按字母顺序对顶级键进行排序Php 基于关键字对二级数组值进行排序,php,arrays,sorting,Php,Arrays,Sorting,我试图根据特定关键字对第二级值进行排序。在这种情况下,关键字是红色的 如果我检查回调函数中的步骤,它似乎可以工作,但最终结果不变。它还按字母顺序对顶级键进行排序 $data = array( 'foo' => array( 'red', 'green' ), 'bar' => array( 'yellow', 'red' ), ); print_r($data); uasort($data, function($da
$data = array(
'foo' => array(
'red', 'green'
),
'bar' => array(
'yellow', 'red'
),
);
print_r($data);
uasort($data, function($data) {
$matches = preg_grep("/red/", $data);
$rest = array_diff($data, $matches);
$order = array_merge($matches, $rest);
return $order;
});
print_r($data);
您的代码无法正常工作,因为
uasort()
仅对您在第一个参数(第一级数组($data))中传递给它的数组进行排序。代码的其余部分虽然正在运行且语法正确,但也没有帮助
以下是一个工作示例:
$data = array(
'foo' => array(
'red', 'green'
),
'bar' => array(
'yellow', 'red'
),
);
array_walk($data,function(&$v){
uasort($v,function($a,$b){
return preg_match('/red/',$a)?-1:1;
});});
print_r($data);
- array_walks()遍历第一级数组
- uasort()在回调中提供,并处理二级数组的排序部分
- 然后使用preg_match()匹配字符串,并返回一个适合在
回调中重新排序的值uasort()