對(duì)于php的初學(xué)者,也許會(huì)對(duì)它大量的函數(shù)不清楚該學(xué)習(xí)哪些。我在這列舉了一些大家實(shí)際當(dāng)中可能會(huì)使用到的,供您參考

- array_map ( callable $callback , array $arr1 [, array $... ] )
callback(回調(diào)函數(shù)),接受一個(gè)函數(shù)
函數(shù)作用:將arr1的參數(shù)順序的傳遞給前面的回調(diào)函數(shù)
- 回調(diào)函數(shù)有參時(shí):
/*例1*/
<?php
function cube ( $n )
{
return( $n * $n * $n );
}
$a = array( 1 , 2 , 3 , 4 , 5 );
$b = array_map ( "cube" , $a );
print_r ( $b );
/**
輸出
Array
(
[0] => 1
[1] => 8
[2] => 27
[3] => 64
[4] => 125
)
**/
?>
- 回調(diào)函數(shù)無參時(shí):
<?php
/*例2*/
/*將多個(gè)數(shù)組進(jìn)行合并*/
$a = array( 1 , 2 , 3 , 4 , 5 );
$b = array( "one" , "two" , "three" , "four" , "five" );
$c = array( "uno" , "dos" , "tres" , "cuatro" , "cinco" );
$d = array_map ( null , $a , $b , $c );
print_r ( $d );
/*輸出
Array
(
[0] => Array
(
[0] => 1
[1] => one
[2] => uno
)
[1] => Array
(
[0] => 2
[1] => two
[2] => dos
)
[2] => Array
(
[0] => 3
[1] => three
[2] => tres
)
[3] => Array
(
[0] => 4
[1] => four
[2] => cuatro
)
[4] => Array
(
[0] => 5
[1] => five
[2] => cinco
)
)
*/
?>
- range ( mixed $start , mixed $limit [, number $step = 1 ] )
step表示間隔值,不寫默認(rèn)為1
/*
例1,產(chǎn)生一組數(shù)字
*/
$nums = range(1, 5);
print_r($nums);
/*
輸出:
Array ( [0] => 1 [1] => 2 [2] => 3 [3] => 4 [4] => 5 )
*/
$nums = range(1, 5, 2);
print_r($nums);
/*
輸出:
Array ( [0] => 1 [1] => 3 [2] => 5 )
*/
/*
例2,產(chǎn)生一組字母數(shù)組
*/
$array = range('a','f');
print_r($array);
/*
輸出:
Array ( [0] => a [1] => b [2] => c [3] => d [4] => e [5] => f )
*/
$array = array('a', 'f', 2);
print_r($array);
/*
輸出:
print_r($array);
/*
輸出:
Array ( [0] => a [1] => c [2] => e )
*/
- array_merge ( array $array1 [, array $... ] )
array_merge() 將一個(gè)或多個(gè)數(shù)組的單元合并起來,一個(gè)數(shù)組中的值附加在前一個(gè)數(shù)組的后面。返回作為結(jié)果的數(shù)組。
如果輸入的數(shù)組中有相同的字符串鍵名,則該鍵名后面的值將覆蓋前一個(gè)值。然而,如果數(shù)組包含數(shù)字鍵名,后面的值將不會(huì)覆蓋原來的值,而是附加到后面。
如果只給了一個(gè)數(shù)組并且該數(shù)組是數(shù)字索引的,則鍵名會(huì)以連續(xù)方式重新索引。
/*
解釋:如果只給了一個(gè)數(shù)組并且該數(shù)組是數(shù)字索引的,則鍵名會(huì)以連續(xù)方式重新索引。
*/
$array1 = array(1, 2, 3, 4, 5);
$array2 = array(1, 2, 8, 9);
$array3 = array_merge($array1, $array2);
print_r($array3);
/*
輸出:
Array
(
[0] => 1
[1] => 2
[2] => 3
[3] => 4
[4] => 5
[5] => 1
[6] => 2
[7] => 8
[8] => 9
)
*/
- array_merge_recursive ( array $array1 [, array $... ] ) 遞歸地合并一個(gè)或多個(gè)數(shù)組
如果輸入的數(shù)組中有相同的字符串鍵名,則這些值會(huì)被合并到一個(gè)數(shù)組中去,這將遞歸下去,因此如果一個(gè)值本身是一個(gè)數(shù)組,本函數(shù)將按照相應(yīng)的條目把它合并為另一個(gè)數(shù)組。然而,如果數(shù)組具有相同的數(shù)組鍵名,后一個(gè)值將不會(huì)覆蓋原來的值,而是附加到后面。
會(huì)根據(jù)鍵名相同一層一層的將值進(jìn)行合并
/*
例1
*/
$ar1 = array("color" => array("favorite" => "red"), 5);
$ar2 = array(10, "color" => array("favorite" => array('a'=>"red"), "blue"));
$result = array_merge_recursive($ar1, $ar2);
print_r($result);
/*
輸出:
Array
(
[color] => Array
(
[favorite] => Array
(
[0] => red
[a] => red 重點(diǎn)
)
[0] => blue
)
[0] => 5
[1] => 10
)
*/
/*
例2
*/
$ar1 = array("color" => array("favorite" => "red"), 5);
$ar2 = array(10, "color" => array("favorite" =>"red", "blue"));
$result = array_merge_recursive($ar1, $ar2);
print_r($result);
/*
輸出:
Array
(
[color] => Array
(
[favorite] => Array
(
[0] => red
[1] => red 重點(diǎn)
)
[0] => blue
)
[0] => 5
[1] => 10
)
*/
- array_pad ( array $input , int $pad_size , mixed $pad_value ) 給數(shù)組增加值到指定的長度,原數(shù)組不會(huì)改變
<?php
$input = array(12, 10, 9);
$result = array_pad($input, 5, 0);
// result is array(12, 10, 9, 0, 0)
$result = array_pad($input, -7, -1);
// result is array(-1, -1, -1, -1, 12, 10, 9)
$result = array_pad($input, 2, "noop");
// not padded
/*
如果size<數(shù)組的長度,將不會(huì)有變化
*/
?>
- array_pop ( array &$array ) 移出最后一個(gè)元素,原數(shù)組會(huì)改變
array_pop() 彈出并返回 array 數(shù)組的最后一個(gè)單元,并將數(shù)組 array 的長度減一。 如果 array 為空(或者不是數(shù)組)將返回 NULL 。 此外如果被調(diào)用不是一個(gè)數(shù)則會(huì)產(chǎn)生一個(gè) Warning。
<?php
$stack = array("orange", "banana", "apple", "raspberry");
$fruit = array_pop($stack);
print_r($stack);
?>
/*
輸出
Array
(
[0] => orange
[1] => banana
[2] => apple
)
*/
- array_shift() 將數(shù)組開頭的單元移出數(shù)組,原數(shù)組會(huì)改變, 使用此函數(shù)后會(huì)重置(reset())array 指針。
array_shift() 將 array 的第一個(gè)單元移出并作為結(jié)果返回,將 array 的長度減一并將所有其它單元向前移動(dòng)一位。所有的數(shù)字鍵名將改為從零開始計(jì)數(shù),文字鍵名將不變。 如果 array 為空(或者不是數(shù)組)將返回 NULL
- int array_push ( array &$array , mixed $var [, mixed $... ] )
- array_push() 將 array 當(dāng)成一個(gè)棧,并將傳入的變量壓入 array 的末尾。array 的長度將根據(jù)入棧變量的數(shù)目增加
- 返回處理后數(shù)組的元素個(gè)數(shù)
- reset ( array &$array )將數(shù)組的內(nèi)部指針指向第一個(gè)單元
- reset() 將 array 的內(nèi)部指針倒回到第一個(gè)單元并返回第一個(gè)數(shù)組單元的值。
- 數(shù)組為空返回false
- end ( array &$array )
參數(shù)array,該數(shù)組是通過引用(&)傳遞的,因?yàn)樗鼤?huì)被這個(gè)函數(shù)修改。 這意味著你必須傳入一個(gè)真正的變量,而不是函數(shù)返回的數(shù)組,因?yàn)橹挥姓嬲淖兞坎拍芤砸脗鬟f。
- end() 將 array 的內(nèi)部指針移動(dòng)到最后一個(gè)單元并返回其值。
- 數(shù)組為空返回false
<?php
funcation back(){
$arr = array(1, 2, 3);
return $arr;
}
/*上面引用傳遞的意思請(qǐng)注意看*/
$num = end(back()); //錯(cuò)誤!,因?yàn)樵搮?shù)是引用傳遞
$array = back();
$num = end($array); //正確
對(duì)于引用傳遞,如果不將一個(gè)函數(shù)的返回值賦給一個(gè)變量的話,在內(nèi)存中是不會(huì)真正的開辟以個(gè)單獨(dú)的空間內(nèi)存的。而引用傳遞的參數(shù)則必須需要一個(gè)有真實(shí)存在的內(nèi)存的,因此,$array = back(),這樣會(huì)開辟一片內(nèi)存給$array變量