Outputting arrays
print_r()
不熟悉這個的我就不想多說了!最基本的函數,當然要輸出數組也可是使用循環結構輸出,不過有這麼方便的輸出函數干嗎不用呢!
Creating arrays
array()
這個函數我也不想說了,這其實只能算語言結構,大家在新建數組的時候都用到過,沒用過的我只能說,兄弟,我無語了!
list()
這個函數和上面提到的 array()一樣,只是個語言結構,它通過一步操作給一組變量賦值!
具體示例請查看手冊!
range();
array range ( mixed low, mixed high[, number step] )
建立一個包含指定范圍單元的數組
示例: $arr =range(0, 6);
相當於 $arr =array(0, 1, 2, 3, 4, 5, 6);
一般數據按從低到高排列,如果 low> high,則從高到低排列;
Testing for an array
is_array();
測試變量是否array類型,是則返回true,不是則返回false,很基本,很實用的函數!
Adding and removing array elements
array_push()
int array_push ( array &target_array,mixed var [, mixed ...] )
將一個或多個單元從末尾添加至數組!返回新數組的單元總數!
示例:
$states =array( ‘Ohio' , ‘New York' );
array_push ( $states , ‘California' , ‘Texas' );
//output: array((‘Ohio',‘New York' , ‘California',‘Texas');
array_pop();
彈出並返回數組的最後一個單元,並將數組長度減一。使用後會重置數組指針!
示例:
$states =array( ‘Ohio' , ‘New York' );
$state = array_pop ( $states );
//output: New York
array_shift();
與array_pop類似,只不過它移出和返回的是數組的第一個值。數字鍵名將重新從零開始記數,文字鍵名則保持不變!
array_unshift();
與array_push類似,只不過是從數組頭部插入數據!數字鍵名將重新從零開始記數,文字鍵名則保持不變!
array_pad();
array array_pad ( array input, intpad_size, mixed pad_value )
用值將數組填充到指定長度!
pad_size為正,則從右側開始填補,為負,從左側開始填補,小與數組長度,則保持數組不變!示例見手冊!
Locating array elements
in_array();
檢查數組中是否存在某個值,基礎,不說了,具體見手冊!
array_keys();
array array_keys ( array input [,mixed search_value [, bool strict]] )
返回數組中的所有鍵名。如果選定search_value,則返回選定的鍵名!自PHP 5]起,可以用strict參數來進行全等比較( ===)。
array_key_exists();
bool array_key_exists ( mixed key,array search )
檢查給定的鍵名或索引是否存在於數組中,存在則返回true。一些更具體的應用記得查看手冊!
array_values();
array array_values ( array input )
與array_keys()類似!返回的是數組的所有鍵值!
array_search();
mixed array_search ( mixed needle,array haystack [, bool strict] )
在 haystack中搜索 needle參數並在找到的情況下返回鍵名,否則返回 FALSE 。
如果needle是字符串,則比較區分大小寫!
如果strict是true,還得比較類型
如果needle在haystack中出現不止一次,則返回第一個匹配的鍵。要返回所有匹配值的鍵,應該用array_keys()加上可選參數search_value來代替!
Traversing arrays
key();
mixed key ( array &array )
返回數組中當前單元的鍵名!
reset();
重置數組的指針。
each();
返回數組中當前單元的鍵 /值對,並將指針下移一位!
current();
返回當前被內部指針指向的數組單元的值,並不移動指針。如果超出了單元列表的末端,則返回 false。
end();
將 array的內部指針移動到最後一個單元並返回其值。
next();
返回數組內部指針指向的下一個單元的值,或當沒有更多單元時返回 FALSE 。
prev();
返回數組內部指針指向的前一個單元的值,或當沒有更多單元時返回 FALSE 。
array_walk();
bool array_walk ( array &array,callback funcname [, mixed userdata] )
具體描述請參考手冊!
示例:
array_reverse();
array array_reverse ( array array [,bool preserve_keys] )
接受數組 array作為輸入並返回一個單元為相反順序的新數組,如果 preserve_keys為 TRUE 則保留原來的鍵名。
示例:
$states =array( ‘Delaware' , ‘Pennsylvania' , ‘New Jersey' );
print_r ( array_reverse ( $states ));
//Array ([0]=>New Jersey [1]=>Pennsylvania[2]=>Delaware)
$states = array( ‘Delaware' , ‘Pennsylvania' , ‘New Jersey' );
print_r ( array_reverse ( $states , 1 ));
//Array ([2]=>New Jersey [1]=>Pennsylvania[0]=>Delaware)
array_flip();
array array_flip ( array trans )
交換數組中的鍵 /值對,注意 trans 中的值需要能夠作為合法的鍵名,例如需要是 integer 或者 string 。如果值的類型不對將發出一個警告,並且有問題的鍵/值對將不會反轉。
如果同一個值出現了多次,則最後一個鍵名將作為它的值,所有其它的都丟失了。
示例:
$trans =array( "a" => 1 , "b" => 1 , "c" => 2 );
$trans = array_flip ( $trans );
print_r ( $trans );
//Array([1]=>b[2]=>c );
Determining array size and element uniqueness
count();
計算數組中的單元數目或對象中的屬性個數,很基本哦!
array_count_values();
返回一個數組,該數組用input數組中的值作為鍵名,該值在input數組中出現的次數作為值。
示例:
$array= array( 1 , "hello" , 1 , "world" , "hello" );
print_r ( array_count_values ( $array ));
array_unique();
array array_unique ( array array )
接受 array作為輸入並返回沒有重復值的新數組。
示例:
$input =array( "a" => "green" , "red" , "b" => "green" , "blue" , "red" );
$result = array_unique ( $input );
print_r ( $result );
詳細用法請參見手冊!
Sorting arrays
sort();
本函數對數組進行排序。當本函數結束時數組單元將被從最低到最高重新安排。
注意 : 本函數為array中的單元賦予新的鍵名。這將刪除原有的鍵名而不僅是重新排序。
natsort();
利用自然排序法對數組進行排序!
示例:
$array1 = $array2 = array( "img12.png" , "img10.png" , "img2.png" , "img1.png" );
sort ( $array1 );
echo "Standard sorting\n" ;
print_r ( $array1 );
natsort ( $array2 );
echo "\nNatural order sorting\n" ;
print_r ( $array2 );
natcasesort();
與 natsort()一致,除了不區分大小寫!
rsort();
與 sort()一致,這個是逆向排序。
asort();
與 sort()一直,但保持鍵名不變。
array_multisort();
對多個數組或多維數組進行排序,具體參考手冊,有詳細說明!
arsort();
與 rsort()類似,但保持鍵名不變。
ksort();
與 sort()類似,對鍵名進行排序。
krsort();
與 ksort()類似,但是逆向排序。
usort();
利用用戶自定義函數對數組進行排序!
Merging, slicing, splicing, and dissectingarrays
array_combine();
array array_combine ( array keys,array values )
創建一個數組,用一個數組的值作為其鍵名,另一個數組的值作為其值
array_merge();
array array_merge ( array array1 [,array array2 [, array ...]] )
將一個或多個數組的單元合並起來,一個數組中的值附加在前一個數組的後面。返回作為結果的數組。
如果輸入的數組中有相同的字符串鍵名,則該鍵名後面的值將覆蓋前一個值。
然而,如果數組包含數字鍵名,後面的值將不會 覆蓋原來的值,而是附加到後面。
示例:
$array1 =array( "color" => "red" , 2 , 4 );
$array2 = array( "a" , "b" , "color" => "green" , "shape" => "trapezoid" , 4 );
$result = array_merge ( $array1 , $array2 );
print_r ( $result );
如果只給了一個數組並且該數組是數字索引的,則鍵名會以連續方式重新索引。
復制PHP內容到剪貼板$array1 = array();
$array2 = array( 1 => "data" );
$result = array_merge ( $array1 , $array2 );
如果你想完全保留原有數組並只想新的數組附加到後面,用+運算符:
復制PHP內容到剪貼板$array1 = array();
$array2 = array( 1 => "data" );
$result = $array1 + $array2 ;
array_merge_recursive();
array array_merge_recursive ( arrayarray1 [, array ...] )
將一個或多個數組的單元合並起來,一個數組中的值附加在前一個數組的後面。返回作為結果的數組。
如果輸入的數組中有相同的字符串鍵名,則這些值會被合並到一個數組中去,這將遞歸下去,因此如果一個值本身是一個數組,本函數將按照相應的條目把它合並為另一個數組。然而,如果數組具有相同的數組鍵名,後一個值將不會覆蓋原來的值,而是附加到後面。
$ar1 = array( "color" =>array( "favorite" => "red" ), 5 );
$ar2 = array( 10 , "color" => array( "favorite" => "green" , "blue" ));
$result = array_merge_recursive ( $ar1 , $ar2 );
print_r ( $result );
更詳細的使用請參加手冊!
array_slice();
array array_slice ( array array, intoffset [, int length [, bool preserve_keys]] )
從數組中取出一段。
如果offset非負,則序列將從array中的此偏移量開始。如果offset為負,則序列將從array中距離末端這麼遠的地方開始。
如果給出了length並且為正,則序列中將具有這麼多的單元。如果給出了length並且為負,則序列將終止在距離數組末端這麼遠的地方。如果省略,則序列將從offset開始一直到array的末端。
示例:
$input = array( "a" , "b" , "c" , "d" , "e" );
$output = array_slice ( $input , 2 ); // returns"c", "d", and "e"
$output = array_slice ( $input , - 2 , 1 ); // returns "d"
$output = array_slice ( $input , 0 , 3 ); // returns "a","b", and "c"
// note the differences in the array keys
print_r ( array_slice ( $input , 2 , - 1 ));
print_r ( array_slice ( $input , 2 , - 1 , true ));
array_splice();
array array_splice ( array&input, int offset [, int length [, array replacement]] )
把input數組中由offset和length指定的單元去掉,如果提供了replacement參數,則用replacement數組中的單元取代。返回一個包含有被移除單元的數組。注意input中的數字鍵名不被保留。
如果offset非負,則序列將從array中的此偏移量開始。如果offset為負,則序列將從array中距離末端這麼遠的地方開始。
如果給出了length並且為正,則序列中將具有這麼多的單元。如果給出了length並且為負,則序列將終止在距離數組末端這麼遠的地方。如果省略,則序列將從offset開始一直到array的末端。
具體應用參見手冊!
array_intersect();
array array_intersect ( arrayarray1, array array2 [, array ...] )
返回一個數組,該數組包含了所有在 array1 中也同時出現在所有其它參數數組中的值。注意鍵名保留不變。
示例:
$array1 =array( "a" => "green" , "red" , "blue" );
$array2 = array( "b" => "green" , "yellow" , "red" );
$result = array_intersect ( $array1 , $array2 );
array_intersect_assoc();
注意和 array_intersect()不同的是鍵名也用於比較。
array_diff();
與 array_intersect()類似,只不過它是計算數組的差集
array_diff_assoc();
與 array_intersect_assoc()類似,只不過它是計算數組的差集
Other useful array functions
array_rand();
mixed array_rand ( array input [,int num_req] )
從數組中隨機取出一個或多個單元。
shuffle();
bool shuffle ( array &array )
本函數打亂(隨機排列單元的順序)一個數組。
本函數為 array 中的單元賦予新的鍵名。這將刪除原有的鍵名而不僅是重新排序。
array_sum();
將數組中的所有值的和以整數或浮點數的結果返回。
array_chunk();
array array_chunk ( array input, intsize [, bool preserve_keys] )
將一個數組分割成多個數組,其中每個數組的單元數目由 size 決定。最後一個數組的單元數目可能會少幾個。得到的數組是一個多維數組中的單元,其索引從零開始。
將可選參數preserve_keys 設為 TRUE,可以使 PHP 保留輸入數組中原來的鍵名。如果你指定了 FALSE,那每個結果數組將用從零開始的新數字索引。默認值是 FALSE