在 PHP 中,遍歷二維數(shù)組是非常常見的操作。很多時候,我們需要遍歷一個二維數(shù)組來獲取其所有元素或者對其進行一些操作。PHP 提供了多種方法來實現(xiàn)這個操作,其中最簡單的方法就是使用 foreach 循環(huán)。
以下代碼是一個簡單的二維數(shù)組:
$specialties = array( array("Mechanical Engineering", "Mathematics"), array("Computer Science", "Statistics"), array("Artificial Intelligence", "Neural Science") );這個數(shù)組表示了三個學(xué)科及其所屬領(lǐng)域。如果我們想要遍歷這個數(shù)組,可以使用下面的 foreach 循環(huán):
foreach($specialties as $subjects) { foreach($subjects as $subject) { echo "$subject "; } echo "這個循環(huán)中使用了兩個 foreach,第一個 foreach 遍歷每一個元素(也就是每一個學(xué)科),而第二個 foreach 則遍歷每一個學(xué)科所屬的領(lǐng)域。在內(nèi)層 foreach 中我們使用了 echo 輸出了每一個領(lǐng)域,這里使用了一個空格來將多個領(lǐng)域隔開,然后使用 br 標簽將每一行分開。 如果運行上面的代碼,會得到以下輸出:
"; }
Mechanical Engineering Mathematics Computer Science Statistics Artificial Intelligence Neural Science可以看到,我們成功遍歷了這個二維數(shù)組并且輸出了每個學(xué)科所屬的領(lǐng)域。下面我們將介紹更多的遍歷二維數(shù)組的方法。 另一種遍歷二維數(shù)組的方法是使用 for 循環(huán)。以下代碼與上面的 foreach 循環(huán)實現(xiàn)的遍歷結(jié)果相同:
for ($i = 0; $i< count($specialties); $i++) { for ($j = 0; $j< count($specialties[$i]); $j++) { echo $specialties[$i][$j] . " "; } echo "這個循環(huán)使用了兩個嵌套的 for 循環(huán)來遍歷數(shù)組。外層的循環(huán)變量 $i 表示學(xué)科的索引,內(nèi)層循環(huán)變量 $j 表示領(lǐng)域的索引。在內(nèi)層循環(huán)中,我們使用了 echo 輸出了每個領(lǐng)域,并且使用了一個空格來將它們隔開。 使用 for 循環(huán)遍歷二維數(shù)組也是一種常見的方法。雖然這個方法的代碼略顯冗長,但是由于其更加直觀,因此也有很多人喜歡使用它。 除了上述兩種方法外,我們還可以使用 array_walk_recursive 函數(shù)來遍歷二維數(shù)組。這個函數(shù)可以遞歸遍歷一個多維數(shù)組,并且對其中的每個元素應(yīng)用一個用戶自定義的函數(shù)。以下代碼就是使用這個函數(shù)遍歷上面的二維數(shù)組:
"; }
function print_value($value) { echo "$value "; } array_walk_recursive($specialties, "print_value");在上面的代碼中,我們定義了一個函數(shù) print_value,這個函數(shù)接受一個參數(shù) $value,并且使用 echo 輸出它。然后我們使用 array_walk_recursive 函數(shù)以 $specialties 作為第一個參數(shù),以 print_value 函數(shù)作為第二個參數(shù),來遍歷整個數(shù)組。因為我們的 print_value 函數(shù)只是簡單地輸出了值,所以這個遍歷操作并沒有產(chǎn)生實際的結(jié)果。 這三種方法中,使用 foreach 循環(huán)是最常見的,它的代碼也相對最短,因此在實際應(yīng)用中也最為推薦。無論使用哪種方法,遍歷二維數(shù)組都是一項基本操作,希望本文對您有所幫助。