深入了解PHP中的Array陣列和foreach

2022-10-06 09:06:09 字數 1529 閱讀 1742

1. 了解陣列

php 中的陣列實際上是乙個有序對映。對映是一種把 values 關聯到 k程式設計客棧eys 的型別。詳細的解釋可參見:php.net中的array陣列    。

2.例子:一般的陣列

這裡,我通過乙個簡單的例子,並使用圖形方式來了解陣列。

$a = array(3 => 'a', 1 => 'b', 2 => 'c');

echo var_dump($a);

[注]:使用箭頭描述陣列$a各個單元對應某一記憶體位址的資料值(實際上,它內部結構採用hashtable結構,可以參考鳥哥寫的php中的hash演算法)。

3.例子:在陣列定義中,新增引用。

$x = 'x';

$a = array(3 => 'a', 1 => &$x, 2 => 'c');

echo "";

echo var_dump($a);

$x = 'y';

echo var_dump($a);

陣列$a中的第2個單元$a[1]與$x對應的是同乙個資料,使用var_dump($a)的時候,會看到陣列的第2個單元多個&符號,即&string(1) "x",表示引用。

當 修改$x的值='y',也等同於修改$a[1]的值='y'。

下圖可以清楚的描述這一變化:

4.例子:使用foreach遍歷陣列。

$a = array(3 => 'a', 1 => 'b', 2 => 'c');

echo "";

foreach ($a as $key => $value)

每次迴圈中,當前陣列中單元的值被賦給 $value ,單元的鍵key被賦給$key。如下圖描述:

【注:】灰色虛箭頭表示賦予某一值。

5.例子:在foreach遍歷陣列中,使用引用賦值。

$a = array(3 => 'a', 1 => 'b', 2 => 'c');

echo "";

foreach ($a as $key => &$value)

每次迴圈中, $value 都指向當前陣列中單元的值,再執行「 $value.='n'; 」** ,如下圖描述:

6.例子:對例子5的進一步分析。

在例子5,foreach遍歷陣列完成後,不會自動銷毀$value變數,與陣列arlpefy$a最後乙個單元$a[2]指向同乙個資料。

這時候改變$value的值,也就是改變了$a[2]的值。

$value='m';

echo "";

echo "\$arlpefyvalue=$value

";echo var_dump($a);

例項驗證, 陣列最後乙個元素的 $value 引用在 foreach 迴圈之後仍會保留。建議使用 unset() 來將其銷毀。

7.小結

以上例子,只是描述php中的array陣列和foreach的一些特性。學習最後,感覺php中的array陣列和foreach不同於別的程式語言,不能使用類似c語言的程式設計客棧結構分析php。

本文標題: 深入了解php中的array陣列和foreach

本文位址:

深入了解php4 1

對於那些對這個個概念不熟的讀者,迴圈是一種能讓你一遍一遍重複使用同一系列php 做為現在的主流開發語言 命令的控制結構。實際重複的次數可以由你自己決定。第乙個,也是最簡單的乙個迴圈就是所謂的 while 迴圈,如下所示 while condition 或者,用漢語表示 while 下雨了 在這種情況...

從PHP的原始碼中深入了解stdClass類

在百科中,對於stdclasxckowkjhts的定義如下 複製 如下 stdclas在php5才開始被流行。而stdclass也是zend的乙個保留類。stdclass是php的乙個基類,所有的類幾乎都繼承這個類,所以任何時候都可以被new,可以讓這個變數成為乙個object。同時,這個基類又有乙...

深入了解Python中的變數

目錄 變數,英文叫做 variable。在 電腦科學概述 中是這樣定義的,高階程式語言允許使用描述性的名字指向主儲存器中的位置,而不必再使用數字位址,這樣的名字稱為變數 variable 之所以是這樣取名是因為,隨著程式的執行,只要改變儲存在這個位置裡的值,那麼與改名字相聯絡的值就會改變。從形式上看...