PHP學習筆記之數組的定義、遍曆_PHP教程

來源:互聯網
上載者:User
php中數組是一個特殊的資料類型,可以說是對象也可說是儲存空間了, 他裡面可以儲存php中其它資料類型的內容,如一個數組中可以有字元型,數字型,對象等等,下面我先來學習一下php數組的定義與遍曆尋找吧。

① 建立數組第一種方法

$arr[0]=123;
$arr[1]=90;
….

概念:
[0] -> 這個我們稱為下標,或者稱為 關鍵字
$arr[0] -> 這個稱為數組的一個元素.
$arr[0]=123; 123 表示該$arr[0]元素對應的值
$arr –》這個是該數組的名稱.
☞在php數組中,元素存放的值可以是任意資料資料類型

② 建立數組的第二種方法

基本文法
$數組名=array(值1,值2,.......);
舉例說明:
$arr=array(1,90,"helllo",89.5);


③ 第三種方式建立數組(在預設情況下,我們的元素的下標,是從0開始給你編號,但是實際上,也可以自己指定)


基本文法$arr[‘logo’]=”北京”;
$arr[’hsp’]=123;
....
或者
$arr=array(”logo”=>”北京”,”hsp”=>123,4=>678);

數組的遍曆方法:


注: 如果使用 for while do..while 要確定該數組的下標是從 0開始順序排放
數組共有多少個元素,可以使用系統函數count

//

代碼如下 複製代碼

for迴圈遍曆方法
for($i=0;$iecho '
'.$arr[$i];
}

//while迴圈遍曆方法
$i=0;//迴圈控制變數
while($iecho "
".$colors[$i];
$i++;
}

//do..while
$i=0;//迴圈控制變數
do{
echo "
".$colors[$i];
$i++;
}while($i

//foreach 遍曆方法
這個foreach適用範圍更廣
foreach($arr as $key=>$val){
echo $key."=".$val."
";
}

php的數組相關的函數

① count 函數
基本用法是
count($數組名); 可以統計該數組共有多少元素.
② is_array
③ print_r 和 var_dump
④ explode 對字串進行分割
案例:
$str="浙江&台州&杭州";
//在實際開發中,涉及到字串的拆分,可以考慮
$arr=explode("&",$str);
print_r($arr);

數組尋找

例子:

代碼如下 複製代碼

$arr_a = array(0 => "a", 1 => "b", 2 => "c");
$key = array_search("a", $arr_a);
if( $key !== FALSE ){
echo "鍵名為:$key";
} else {
echo '無匹配結果';
}
?>

例子輸出結果如下:

鍵名為:0

array_key_exists()函數


如果在一個數組中找到一個指定的鍵,函數array_key_exists()返回true,否則返回false。其形式如下:

boolean array_key_exists(mixed key,array array);

下面的例子將在數組鍵中搜尋apple,如果找到,將輸出這個水果的顏色:

代碼如下 複製代碼

$fruit["apple"] = "red";
$fruit["banana"] = "yellow";
$fruit["pear"] = "green";
if(array_key_exists("apple", $fruit)){
printf("apple's color is %s",$fruit["apple"]);
}

執行這段代碼得到的結果:

apple's color is red

合并數組
array_merge()函數將數組合并到一起,返回一個聯合的數組。所得到的數組以第一個輸入數組參數開始,按後面數組參數出現的順序依次迫加。其形式為:

Php代碼

array array_merge (array array1 array2…,arrayN)

這個函數將一個或多個數組的單元合并起來,一個數組中的值附加在前一個數組的後面。返回作為結果的數組。

如果輸入的數組中有相同的字串鍵名,則該鍵名後面的值將覆蓋前一個值。然而,如果數組包含數字鍵名,後面的值將不會覆蓋原來的值,而是附加到後面。

如果只給了一個數組並且該數組是數字索引的,則鍵名會以連續方式重新索引。

代碼如下 複製代碼

$fruits = array("apple","banana","pear");
$numbered = array("1","2","3");
$cards = array_merge($fruits, $numbered);
print_r($cards);

// output
// Array ( [0] => apple [1] => banana [2] => pear [3] => 1 [4] => 2 [5] => 3 )
?>

2. 追加數組
array_merge_recursive()函數與array_merge()相同,可以將兩個或多個數組合并在一起,形成一個聯合的數組.兩者之間的區別在於,當某個輸入數組中的某個鍵己經存在於結果數組中時該函數會採取不同的處理方式.array_merge()會覆蓋前面存在的鍵/值對,替換為當前輸入數組中的鍵/值對,而array_merge_recursive()將把兩個值合并在一起,形成一個新的數組,並以原有的鍵作為數組名。還有一個數組合并的形式,就是遞迴追加數組。其形式為:

Php代碼

array array_merge_recursive(array array1,array array2[…,array arrayN])
程式執行個體如下:

代碼如下 複製代碼

$fruit1 = array("apple" => "red", "banana" => "yellow");
$fruit2 = array("pear" => "yellow", "apple" => "green");
$result = array_merge_recursive($fruit1, $fruit2);
print_r($result);

// output
// Array ( [apple] => Array ( [0] => red [1] => green ) [banana] => yellow [pear] => yellow )
?>

現在鍵 apple 指向一個數組,這個數組由兩個顏色值組成的索引數組。

3. 串連數組
array_combine()函數會得到一個新數組,它由一組提交的鍵和對應的值組成。其形式為:

array array_combine(array keys,array values)

注意,兩個輸入數組必須大小相同,不可為空。樣本如下

代碼如下 複製代碼


$name = array("apple", "banana", "orange");
$color = array("red", "yellow", "orange");
$fruit = array_combine($name, $color);
print_r($fruit);

// output
// Array ( [apple] => red [banana] => yellow [orange] => orange )
?>

4. 拆分數組 array_slice()

array_slice()函數將返回數組中的一部分,從鍵offset開始,到offset+length位置結束。其形式:

Php代碼

array array_slice (array array, int offset[,int length])

offset 為正值時,拆分將從距數組開頭的offset 位置開始;如果offset 為負值,則拆分從距數組末尾的offset 位置開始。如果省略了選擇性參數length,則拆分將從offset 開始,一直到數組的最後一個元素。如果給出了length 且為正數,則會在距數組開頭的offset+length 位置結束。相反,如果給出了length且為負數,則在距數組開頭的count(input_array)-|length|位置結束。考慮一個例子:

代碼如下 複製代碼

$fruits = array("Apple", "Banana", "Orange", "Pear", "Grape", "Lemon", "Watermelon");
$subset = array_slice($fruits, 3);
print_r($subset);

// output
// Array ( [0] => Pear [1] => Grape [2] => Lemon [3] => Watermelon )
?>


數組排序(下面方法用於一維數組)

•sort() 函數用於對數組單元從低到高進行排序。
•rsort() 函數用於對數組單元從高到低進行排序。
•asort() 函數用於對數組單元從低到高進行排序並保持索引關係。
•arsort() 函數用於對數組單元從高到低進行排序並保持索引關係。
•ksort() 函數用於對數組單元按照鍵名從低到高進行排序。
•krsort() 函數用於對數組單元按照鍵名從高到低進行排序。

多維陣列排序

比如有個多為數組:

代碼如下 複製代碼

$arr = array(
‘d’ => array(‘id’ => 5, ‘name’ => 1, ‘age’ => 7),
‘b’ => array(‘id’ => 2,’name’ => 3,’age’ => 4),
‘a’ => array(‘id’ => 8,’name’ => 10,’age’ => 5),
‘c’ => array(‘id’ => 1,’name’ => 2,’age’ => 2)
);

需要對二維數組中的 age 項排序。

需要用到PHP的內建函數 array_multisort(),可以看手冊。

自訂函數:

代碼如下 複製代碼

function multi_array_sort($multi_array,$sort_key,$sort=SORT_ASC){
if(is_array($multi_array)){
foreach ($multi_array as $row_array){
if(is_array($row_array)){
$key_array[] = $row_array[$sort_key];
}else{
return false;
}
}
}else{
return false;
}
array_multisort($key_array,$sort,$multi_array);
return $multi_array;
}

//處理

echo “

”;
print_r(multi_array_sort($arr,’age’));exit;

//輸出

Array
(
[c] => Array
(
[id] => 1
[name] => 2
[age] => 2
)

[b] => Array
(
[id] => 2
[name] => 3
[age] => 4
)

[a] => Array
(
[id] => 8
[name] => 10
[age] => 5
)

[d] => Array
(
[id] => 5
[name] => 1
[age] => 7
)

)

written by 大宇

http://www.bkjia.com/PHPjc/632628.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/632628.htmlTechArticlephp中數組是一個特殊的資料類型,可以說是對象也可說是儲存空間了, 他裡面可以儲存php中其它資料類型的內容,如一個數組中可以有字元型...

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.