一、認識陣列
傳統上把陣列(array)定義為一組有某種共同特性的元素,包括相似性和型別。每個元素由乙個特殊的識別符號來區分,稱之為鍵(key);而每個鍵對應乙個值(value)。
$usernames=array('李彥巨集','馬雲','馬化騰');//定義乙個陣列
預設情況下以數字作為索引的鍵名(從0開始),usernames[0]表示李彥巨集
range()方法也可以定義陣列
$numbers=range(1,10);
$letters=range('a','z');
$numbers=range(1,10,2);//第三個引數表示步長
二、訪問陣列
一般地遍歷陣列採用foreach迴圈(注意:foreach屬於語法結構),陣列索引陣列可以用for迴圈遍歷
for($i=0;$i
foreach($numbers=>value)
三、自定義鍵陣列(關聯陣列)
<?php
// 初始化關聯陣列
$ages=array('何健'=>92,'建行'=>91);
// 訪問陣列元素
$ages['何健'];
// 新增陣列元素
$ages['王鵬']=95;
// 現在陣列的的元素變成了三個
echo count($ages);
// 也可以直接新增陣列
$prices['觀陵山']=9800;
$prices['大河貝']=9900;
$prices['聖河山']=6900;
// $prices這個陣列變數被自動建立出來
?>
foreach遍歷關聯陣列
foreach($age as $key=>$value)
each返回陣列中當前的鍵/值對並將陣列指標向前移動一步
<?php
$foo=array("robert"=>"bob","seppo"=>"sepi");
$bar=each($foo);
$bar2=each($foo);
print_r($bar);
print_r($bar2);
?>
list把陣列中的值賦給一些變數
<?php
$color=array('red','white','blue');
list($a,$b,$c)=$color;
echo $a;
?>
注意list()無法識別字串key
each經常和list結合使用
<?php
$ages=array('建行'=>91,'何健'=>92,'王鵬'=>95);
while (list($k,$v)=each($ages))
?>
當時用each()函式時,陣列將記錄當前元素。如果希望在相同的指令碼中兩次使用該陣列,就必須使用reset()將當前元素重新設定到陣列開始處。
reset($ages)
確定唯一的陣列元素:array_unique();刪除掉陣列裡相同值得元素
置換陣列鍵和值:array_flip();它會對調陣列中的key和value;
<?php
$ages=array('建行'=>91,'何健'=>92,'王鵬'=>95,'馬簫'=>91);
while (list($k,$v)=each($ages))
print_r(array_unique($ages));//重複的元素中後面的被刪掉
print_r(array_flip($ages));//重複的元素中前面的被刪掉
?>
四、多維陣列
<?php
// 多維陣列
$products=array(
array('蘋果',6,5.32),
array('橘子',3,3.1),
array('香蕉',5,4.3)
);// 雙重for迴圈遍歷這個陣列
for ($i=0; $i < count($products); $i++)
echo "";}
// 將上面的陣列變成關聯陣列
$products1=array(
array('名稱'=>'蘋果','數量'=>6,'**'=>5.32),
array('名稱'=>'橘子','數量'=>3,'**'=>3.1),
array('名稱'=>'香蕉','數量'=>5,'**'=>4.3)
);// 這種情況就不能再使用雙重for迴圈來遍歷
for ($i=0; $i < count($products1); $i++)
echo "";}
// 或者使用each()和list()結合的方法
for ($i=0; $i < count($products1); $i++)
echo "";}
?>
五、陣列排序
對陣列中的相關資料進行排序是一件非常有意義的事
1.sort()公升序排序
print_r($products);
echo "
";// 使用sort()將陣列按照字母公升序進行排序
sort($products);//原陣列排序方式改變
print_r($products);
// 使用sort()函式將數字公升序排序
$prices=array(100,10,4,23,78);
sort($prices);
sort()函式的第二個引數是可選的sort_tegular(預設值)、sort_numeric或sort_string,用來制定排序的型別
print_r($prices);
echo "
";sort($prices,sort_string);//與預設的排序結果不一樣
print_r($prices);
2.asort()對陣列進行公升序排序並保持索引關係
$products=array("c"=>"觀陵山","a"=>"菩遙山","b"=>"大河貝");
asort($products);
print_r($products);//按鍵值拼音的先後順序排序
3.ksort()按鍵名的公升序排序
$products=array("c"=>"觀陵山","a"=>"菩遙山","b"=>"大河貝");
ksort($products);//按鍵名排序
print_r($products);
4.反向排序:rsort()、arsort()和krsort()
5.再一些應用中,可能希望按照另一種方式對陣列排序。函式shuffle()將陣列的元素進行隨機排序。函式array_reverse()給出乙個原來陣列的反向排序。
$products=array("a"=>"觀陵山","b"=>"菩遙山","c"=>"大河貝","d"=>"龍生","e"=>"永樂青山");
shuffle($products);//隨機排序,所以變成數字形式
print_r($products);
echo "
";$newarr=array_reverse($products);//不能改變原陣列的情況
print_r($newarr);
六、陣列的指標操作
// current(),next(),prev(),end()
$transport=array('foot','bike','car','plane');
$mode=current($transport);//$mode='foot'
$mode=next($transport);//$mode='bike'
$mode=current($transport);//$mode='bike'
$mode=prev($transport);//$mode='foot'
$mode=end($transport);//$mode='plane';
// each()也運算元組的指標但是與next()有所不同,前者再指標移動之前返回當前元素,而後者先將指標前移,在返回當前元素
// pos()是current()的別名陣列
// reset()重置相當於指標回到最初的位置
七、統計陣列個數
count()和sizeof()統計陣列下標的個數,返回數值型別
array_count_values()統計陣列內下標值的個數,返回的是乙個陣列
八、將陣列轉化成標量變數:extract()
第5章 陣列
陣列是一種常用的資料結構。高階程式設計評議都提供了支援陣列的基本方法。陣列分靜態陣列和動態陣列。靜態陣列和動態陣列的實現機制相似,只是在程式設計時向系統申請內在空間的時間不同。陣列是n n 1 個相同資料型別的資料元素a0,a1,a2,a n 1 構成的占用一塊位址連續的記憶體單元有限序列。資料集合...
第5章 陣列
1 陣列 指的是把一組相同資料型別,並且有相同含義資料放到乙個陣列變數中。1 定義 陣列是乙個變數,儲存相同資料型別的一組資料。2 宣告 宣告乙個陣列就是在記憶體空間劃出一串連續的空間 3 陣列的結構和基本要素 識別符號 陣列的名稱,用於區分不同的陣列。陣列只有乙個名稱 陣列元素 向陣列中存放的資料...
5 第 5 章 迴圈
1.可以用迴圈來驗證輸入。在迴圈前的第一次讀取操作,稱為啟動讀取,如果後續還需要繼續讀取,則語句應該在迴圈中。2.在實際程式設計應用中,不建議在 cout 語句中放置遞增或遞減運算子 因為容易出錯 3.需要計數時使用計數器,需要累計彙總時使用累加器。4.標記符號是乙個特殊值,指示著值列表的結尾。一般...