- array_merge() : array
将一个或多个数组的单元合并起来,一个数组中的值附加在前一个数组的后面。返回作为结果的数组。
如果输入的数组中有相同的字符串键名,则该键名后面的值将覆盖前一个值。然而,如果数组包含数字键名,后面的值将不会覆盖原来的值,而是附加到后面。
如果只给了一个数组并且该数组是数字索引的,则键名会以连续方式重新索引。
注意:其中一个数组为null,返回的值也为null(曾经被自己坑过)
<?php
$array1 = array("color" => "red", 2, 4);
$array2 = array("a", "b", "color" => "green", "shape" => "trapezoid", 4);
$array3 = null;
$result = array_merge($array1, $array2);
print_r($result);
- array_push() : int
array_push() 将 array 当成一个栈,并将传入的变量压入 array 的末尾。array 的长度将根据入栈变量的数目增加。和如下效果相同:
<?php
$array[] = $var;
注意:
1、这个函数建议大家少用吧,还不如直接用 $array[] = ,因为这样没有调用函数的额外负担;
2、另外,如果第一个参数不是数组,array_push() 将发出一条警告(自己也被坑过)
3、记得函数返回的是元素的个数(int),而不是数组
- array_pop() : mixed
弹出并返回 array 数组的最后一个单元,并将数组 array 的长度减一
<?php
$array = [
'a' => '1',
'b' => '2',
'c' => '3'
];
$count = array_push($array, array('123'));
echo $count; // 返回值为4
var_dump($array); //array('a' => '1','b' => '2','c' => '3', 0 => array('123'))
$pop_array = array_pop($array); //array(1) {[0]=>string(3) "123"}
var_dump($pop_array);
var_dump($array);
- array_search() :mixed
在数组中搜索给定的值,如果成功则返回首个相应的键名。俗称:“大海捞针”。
底层的代码其实就是循环遍历,实现的时间复杂度O(n²),这个时间复杂度大家是懂的(恐怖)。以下是部分代码:(我也不知道为什么要粘贴上去,可能显得牛逼吧)
static inline void php_search_array(INTERNAL_FUNCTION_PARAMETERS, int behavior) /* {{{ */
{
if (strict) {
ZEND_HASH_FOREACH_KEY_VAL(Z_ARRVAL_P(array), num_idx, str_idx, entry) {
……
} ZEND_HASH_FOREACH_END();
} else {
if (Z_TYPE_P(value) == IS_LONG) {
ZEND_HASH_FOREACH_KEY_VAL(Z_ARRVAL_P(array), num_idx, str_idx, entry) {
……
} ZEND_HASH_FOREACH_END();
} else if (Z_TYPE_P(value) == IS_STRING) {
ZEND_HASH_FOREACH_KEY_VAL(Z_ARRVAL_P(array), num_idx, str_idx, entry) {
……
} ZEND_HASH_FOREACH_END();
} else {
ZEND_HASH_FOREACH_KEY_VAL(Z_ARRVAL_P(array), num_idx, str_idx, entry) {
……
} ZEND_HASH_FOREACH_END();
}
}
RETURN_FALSE;
}
这里是简单的示例
<?php
$array = array(0 => 'blue', 1 => 'red', 2 => 'green', 3 => 'red');
$key = array_search('green', $array); // $key = 2;
$key = array_search('red', $array); // $key = 1;
?>
注意:很多新人滥用了这个函数,其实就想大海捞针一样,循环遍历。该函数在某些场景下效率是很低的。这里有一篇文章有详细的介绍与数据证明,建议大家看看:慎用php的array_search函数--作者:安木1991)
网友评论