php 俩个二维索引数据foreach 根据条件将其中的二维数组按照另一个二维数组排序 为什么取出来的是关联数组
在 PHP 中,如果使用 foreach
遍历数组时,如果数组的索引是数字类型,那么遍历得到的键值就是该索引值本身。如果数组的索引是字符串类型,那么遍历得到的键值就是该字符串值本身。
当你使用 foreach
遍历一个二维索引数组时,遍历得到的每一个元素都是一个关联数组,也就是一个以键值对形式存储数据的数组。在这种情况下,如果你将一个关联数组放入另一个二维数组中,那么该数组也会成为一个关联数组。
如果你需要按照特定的条件对数组进行排序,可以使用 usort
函数来实现。usort
函数接受两个参数,第一个参数是需要排序的数组,第二个参数是一个自定义的比较函数,用来判断数组中的元素的大小关系。具体实现方法如下:
// 示例二维索引数组
$arr = [
["name"=>"张三", "age"=>30, "score"=>80],
["name"=>"李四", "age"=>25, "score"=>90],
["name"=>"王五", "age"=>28, "score"=>70],
];
// 根据 score 属性进行排序
usort($arr, function($a, $b){
// 按照 score 数值从大到小排序
return $b["score"] - $a["score"];
});
// 遍历输出排序结果
foreach($arr as $key=>$value){
echo "{$value["name"]}: {$value["score"]}\n";
}
在这个例子中,我们先定义了一个二维索引数组 $arr
,然后使用 usort
函数根据 score 属性进行排序。排序函数使用了匿名函数的形式,通过比较 $a
和 $b
数组中的 score 属性来实现从大到小的排序。最后,我们再使用 foreach
遍历排好序的数组,并按照特定格式输出结果。
请注意,排序后得到的数组仍然是一个二维索引数组,只是其中每一个元素都是一个关联数组。