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