61、array_count_values
返回一个数组: 数组的键(必须是 int 或 string)是
array
里单元的值; 数组的值是array
单元的值出现的次数。
<?php
$array = array(1, "hello", 1, "world", "hello");
print_r(array_count_values($array));
?>
以上例程会输出:
Array ( [1] => 2 [hello] => 2 [world] => 1 )
62、array_product
以整数或浮点数返回一个数组中所有值的乘积。
<?php
$a = array(2, 4, 6, 8);
echo "product(a) = " . array_product($a) . "\n";
echo "product(array()) = " . array_product(array()) . "\n";
?>
product(a) = 384 product(array()) = 1
63、array_push
将
array
当成一个栈,并将传入的变量压入array
的末尾。array
的长度将根据入栈变量的数目增加。
注意: 如果用 array_push() 来给数组增加一个单元,还不如用
$array[] =
,因为这样没有调用函数的额外负担。
<?php
$stack = array("orange", "banana");
array_push($stack, "apple", "raspberry");
print_r($stack);
?>
Array ( [0] => orange [1] => banana [2] => apple [3] => raspberry )
64、array_pop
弹出并返回
array
最后一个元素的值,并将array
的长度减一。
<?php
$stack = array("orange", "banana", "apple", "raspberry");
$fruit = array_pop($stack);
print_r($stack);
?>
Array ( [0] => orange [1] => banana [2] => apple )
65、array_unshift
将传入的单元插入到
array
数组的开头。注意单元是作为整体被插入的,因此传入单元将保持同样的顺序。所有的数值键名将修改为从零开始重新计数,所有的文字键名保持不变。
<?php
$queue = array("orange", "banana");
array_unshift($queue, "apple", "raspberry");
print_r($queue);
?>
Array ( [0] => apple [1] => raspberry [2] => orange [3] => banana )
66、array_shift
将
array
的第一个单元移出并作为结果返回,将array
的长度减一并将所有其它单元向前移动一位。所有的数字键名将改为从零开始计数,文字键名将不变。
<?php
$stack = array("orange", "banana", "apple", "raspberry");
$fruit = array_shift($stack);
print_r($stack);
?>
以上例程会输出:
Array ( [0] => banana [1] => apple [2] => raspberry )
67、sort
对数组升序排序
示例1:
<?php
$fruits = array("lemon", "orange", "banana", "apple");
sort($fruits);
foreach ($fruits as $key => $val) {
echo "fruits[" . $key . "] = " . $val . "\n";
}
?>
以上例程会输出:
fruits[0] = apple fruits[1] = banana fruits[2] = lemon fruits[3] = orangefruits 被按照字母顺序排序。
示例2:不区分大小写自然排序的例子
<?php
$fruits = array(
"Orange1", "orange2", "Orange3", "orange20"
);
sort($fruits, SORT_NATURAL | SORT_FLAG_CASE);
foreach ($fruits as $key => $val) {
echo "fruits[" . $key . "] = " . $val . "\n";
}
?>
以上例程会输出:
fruits[0] = Orange1 fruits[1] = orange2 fruits[2] = Orange3 fruits[3] = orange20
和大多数 PHP 排序函数一样,sort() 使用了 » 快速排序 实现的。 在已排序的数组分片的中间,选择基准值,具有最优时间。 但不应该依赖它实现的细节。
示例3:
//数组的排序
$arr = [30,4,82,15,20,'abc','hello',2,46];
printf('<pre>%s</pre>',print_r($arr,true));
//默认排序:升序(键名自动重置)sort()
sort($arr);
printf('<pre>%s</pre>',print_r($arr,true));
以上例程会输出:
Array ( [0] => 30 [1] => 4 [2] => 82 [3] => 15 [4] => 20 [5] => abc [6] => hello [7] => 2 [8] => 46 )Array ( [0] => abc [1] => hello [2] => 2 [3] => 4 [4] => 15 [5] => 20 [6] => 30 [7] => 46 [8] => 82 )
68、asort
对
array
自身按照升序进行排序,并依然保持数组的键与值的关联。主要用于对那些单元顺序很重要的关联数组进行排序。
<?php
$fruits = array("d" => "lemon", "a" => "orange", "b" => "banana", "c" => "apple");
asort($fruits);
foreach ($fruits as $key => $val) {
echo "$key = $val\n";
}
?>
以上例程会输出:
c = apple b = banana d = lemon a = orangefruits 被按照字母顺序排序,并且值与索引的关系不变。
69、rsort
对
array
本身按照值(value)降序排序,键名自动重置。
注意:
如果两个成员完全相同,那么它们将保持原来的顺序。 在 PHP 8.0.0 之前,它们在排序数组中的相对顺序是未定义的。
注意: 此函数为
array
中的元素赋与新的键名。这将删除原有的键名,而不是仅仅将键名重新排序。注意:
重置数组中的内部指针,指向第一个元素。
<?php
$fruits = array("lemon", "orange", "banana", "apple");
rsort($fruits);
foreach ($fruits as $key => $val) {
echo "$key = $val\n";
}
?>
以上例程会输出:
0 = orange 1 = lemon 2 = banana 3 = applefruits 被按照字母顺序逆向排序。
70、arsort
对
array
本身按照降序排序。 并保持数组的键与值之间的关联。主要用于对那些单元顺序很重要的结合数组进行排序。
<?php
$fruits = array("d" => "lemon", "a" => "orange", "b" => "banana", "c" => "apple");
arsort($fruits);
foreach ($fruits as $key => $val) {
echo "$key = $val\n";
}
?>
以上例程会输出:
a = orange d = lemon b = banana c = applefruits 被按照字母顺序逆向排序,并且单元的索引关系不变。