1、基本內容
range(low,high,[step]);函數
,創建一個包含指定范圍的元素的數組。
參數step:可選。規定元素之間的步進制。默認是 1。
如:range(0,10,2);
輸出以2遞增,到10結束的數組。
- 循環輸出數組內容
$price['a'] = 100;
$price['b'] = 10;
$price['c'] = 4;
1-foreach()方法
foreach ($price as $key=>$value){
echo $key." - ".$value."<br />";
}
2-each()方法
while($element = each($price)){
echo $element['key'];
echo " -- ";
echo $element['value'];
echo "<br />";
}
3-list()方法
reset($price);
使用each()函數時,數組將記錄當前元素,若要在相同的腳本中
多次使用該數組,應重置數組的指針到開始處
while(list($product,$pric) = each($price)){
echo $product." - - ".$pric."<br />";
}
list()可以重命名數組的key和value值,該函數只使用于數字索引的數組,且默認從0開始
- 二維數組
$products = array(
array('Code' => 'TIR',
'Desc' => 'Tires',
'Price' => 100
),
array('Code' => 'OIL',
'Desc' => 'Oil',
'Price' => 10
),
array('Code' => 'SPK',
'Desc' => 'Spark Plugs',
'Price' => 4
),
);
for($row=0; $row<3; $row++){
while(list($key, $value) = each($products[$row])){
echo " |$value";
}
echo " |<br />";
}
輸出:
|TIR |Tires |100 |
|OIL |Oil |10 |
|SPK |Spark Plugs |4 |
- 數組排序(一維數組和多維數組)
- 一維數組的一些排序函數
1、適用于無關聯的數組,如一維數字索引數組
$arr = array('Tir','Oil' ,'Spk' ,);
sort(arr,[sortingtype]); 函數對索引數組進行升序排序
如果成功則返回 TRUE,否則返回 FALSE
參數sortingtype:可選。規定如何比較數組的元素/項目
0 = SORT_REGULAR - 默認。把每一項按常規順序排列
1 = SORT_NUMERIC - 把每一項作為數字來處理
2 = SORT_STRING - 把每一項作為字符串來處理。
2、適用于關聯數組的排序如一維關聯數組
$arr = array('Tir' => 100,'Oil' => 10,'Spk' => 4,);
asort();ksort();
若用關聯數組存儲各個項目和它們的價格,
就需要用不同的排序函數使關鍵字和值在排序時仍然保持一致。
asort();將數組的value值升序排序
ksort();將數組的key值升序排序
3、反向排序
對應于 sort(),asort(),ksort(),反向排序函數依次為
rsort(),arsort(),krsort(),使數組降序排序。
-
多維數組排序
usort()
usort();用例:
$products = array(
array('Code' => 'TIR',
'Desc' => 'Tires',
'Price' => 100
),
array('Code' => 'OIL',
'Desc' => 'Oil',
'Price' => 10
),
array('Code' => 'SPK',
'Desc' => 'Spark Plugs',
'Price' => 4
),
);
usort($products, "usortRank");
function usortRank($a,$b){
$a1 = $a['Price'];
$b1 = $b['Price'];
if($a1 == $b1){
return 0;
}
return ($a1>$b1 ? 1:-1);
}
print_r($products);
類似于asort()和ksort()
對應有uasort()和uksort()
- 對數組進行重新排序
shuffle()
函數將數組次序隨機打亂;
array_reverse()
給出一個原數組的反向排序
array_push()
函數將每個新元素添加到數組的末尾
array_pop()
函數刪除并返回數組末尾的一個元素 -
explode()函數
:將字符串打散為數組
explode(separator,string,limit);
*separator*必需。規定在哪里分割字符串。
*string*必需。要分割的字符串。
*limit*可選。規定所返回的數組元素的數目。
可能的值:
大于 0 - 返回包含最多 *limit* 個元素的數組
小于 0 - 返回包含除了最后的 -*limit* 個元素以外的所有元素的數組
0 - 返回包含一個元素的數組
如:
$str = 'one,two,three,four';
print_r(explode(',',$str));輸出結果為:Array ( [0] => one [1] => two [2] => three [3] => four)
print_r(explode(',',$str,0));輸出結果為:Array ( [0] => one,two,three,four )
print_r(explode(',',$str,2));輸出結果為:Array ( [0] => one [1] => two,three,four )
print_r(explode(',',$str,-1));//返回不包含最后一個元素的數組
即 Array ( [0] => one [1] => two [2] => three )
- 數組中瀏覽
each() 函數返回當前元素的鍵名和鍵值,并將內部指針向前移動
current() - 返回數組中的當前元素的值
end() - 將內部指針指向數組中的最后一個元素,并輸出
next() - 將內部指針指向數組中的下一個元素,并輸出
prev() - 將內部指針指向數組中的上一個元素,并輸出
reset() - 將內部指針指向數組中的第一個元素,并輸出
--
$arrTest = range(1, 10);
print_r(each($arrTest));
//Array ( [1] => 1 [value] => 1 [0] => 0 [key] => 0 )
--2
$people = array("Bill", "Steve", "Mark", "David");
reset($people);
while (list($key, $val) = each($people)){
echo "$key => $val<br>";
}
--例子
<?php
$people = array("Bill", "Steve", "Mark", "David");
echo current($people) . "<br>"; // 當前元素是 Bill
echo next($people) . "<br>"; // Bill 的下一個元素是 Steve
echo current($people) . "<br>"; // 現在當前元素是 Steve
echo prev($people) . "<br>"; // Steve 的上一個元素是 Bill
echo end($people) . "<br>"; // 最后一個元素是 David
echo prev($people) . "<br>"; // David 之前的元素是 Mark
echo current($people) . "<br>"; // 目前的當前元素是 Mark
echo reset($people) . "<br>"; // 把內部指針移動到數組的首個元素,即 Bill
echo next($people) . "<br>"; // Bill 的下一個元素是 Steve
print_r (each($people)); // 返回當前元素的鍵名和鍵值(目前是 Steve),并向前移動內部指針
?>
-
array_walk($arr, $func, [userdata...])
對數組中的元素運用自定義函數,在函數中,數組的鍵名和鍵值是參數
$arrTest = range(1, 10);
function my_print(&$value,$key,$factor){
echo $value *= $factor;
echo "<br />";
}
array_walk($arrTest, 'my_print', 3);
echo "<hr/>";
print_r($arrTest);
這里的&符號是引用傳值,將數組的每個元素的值都乘以3。
-
extract($arr, $extract_rules, $prefix)
該函數對數組鍵名作為變量名,使用數組鍵值作為變量值
*array*
必需。規定要使用的數組。
*extract_rules*
可選。extract() 函數將檢查每個鍵名是否為合法的變量名,同時也檢查和符號表中已存在的變量名是否沖突。對不合法和沖突的鍵名的處理將根據此參數決定。
可能的值:
EXTR_OVERWRITE - 默認。如果有沖突,則覆蓋已有的變量。
EXTR_SKIP - 如果有沖突,不覆蓋已有的變量。
EXTR_PREFIX_SAME - 如果有沖突,在變量名前加上前綴 *prefix*。
EXTR_PREFIX_ALL - 給所有變量名加上前綴 *prefix*。
EXTR_PREFIX_INVALID - 僅在不合法或數字變量名前加上前綴 *prefix*。
EXTR_IF_EXISTS - 僅在當前符號表中已有同名變量時,覆蓋它們的值。其它的都不處理。
EXTR_PREFIX_IF_EXISTS - 僅在當前符號表中已有同名變量時,建立附加了前綴的變量名,其它的都不處理。
EXTR_REFS - 將變量作為引用提取。導入的變量仍然引用了數組參數的值。
-
*prefix*
可選。請注意 *prefix* 僅在 *extract_type* 的值是 EXTR_PREFIX_SAME,EXTR_PREFIX_ALL,EXTR_PREFIX_INVALID 或 EXTR_PREFIX_IF_EXISTS 時需要。如果附加了前綴后的結果不是合法的變量名,將不會導入到符號表中。
前綴和數組鍵名之間會自動加上一個下劃線
1-
$arr = array('k1'=>'v1','k2'=>'v2','k3'=>'v3');
extract($arr);
echo $k1;//輸出v1
2-
$k1 = 'bv';
$arr = array('k1'=>'v1', 'k2'=>'v2', 'k3'=>'v3');
extract($arr, EXTR_PREFIX_SAME, 'same');
echo "$k1 , $k2 , $k3 , $same_k1";
//輸出 bv , v2 , v3 , v1