ArrayIterator::uasort()
函数用于根据值对数组进行自定义排序,保留键值关联。这个函数会改变原始数组。
用法:
ArrayIterator::uasort( array $array, callable $callback ): bool
参数:
$array
:要排序的数组。$callback
:自定义排序的回调函数,该函数接受两个参数,比较两个数组元素的值并返回排序结果。
返回值:
- 函数执行成功时返回
true
,否则返回false
。
示例: 假设有以下数组需要根据值进行排序:
$fruits = array(
"apple" => "red",
"banana" => "yellow",
"orange" => "orange",
"grape" => "purple"
);
下面是一个使用 ArrayIterator::uasort()
的示例:
// 自定义排序函数,根据值的长度进行升序排序
function sortByLength($a, $b) {
if (strlen($a) == strlen($b)) {
return 0;
}
return (strlen($a) < strlen($b)) ? -1 : 1;
}
// 使用 ArrayIterator::uasort() 对数组进行排序
$iterator = new ArrayIterator($fruits);
$iterator->uasort('sortByLength');
// 输出排序后的结果
foreach ($iterator as $key => $value) {
echo "<p>$key: $value</p>";
}
输出结果:
<p>grape: purple</p>
<p>apple: red</p>
<p>banana: yellow</p>
<p>orange: orange</p>
在上面的示例中,我们定义了一个自定义排序函数 sortByLength($a, $b)
,该函数按字符串长度升序排序。然后使用 ArrayIterator::uasort()
方法根据值的长度对 $fruits
数组进行排序。最后,使用 foreach
循环遍历排序后的数组,并将键值对以 <p>
标签包裹输出。
请注意,ArrayIterator::uasort()
方法会改变原始数组的顺序,不返回新的排序后的数组。