PHP二維數組中,有時候需要獲取或操作某一列的值。比如一個保存學生信息的二維數組,我們需要獲取所有學生的姓名,或者按照學生的成績進行排序。
舉例來說,我們有以下的二維數組:
$students = array( array("name" => "小明", "age" => 18, "score" => 90), array("name" => "小紅", "age" => 17, "score" => 85), array("name" => "小剛", "age" => 19, "score" => 92) );
如果我們需要獲取所有學生的姓名,可以使用foreach循環遍歷數組,并使用鍵值來獲取姓名:
foreach($students as $student) { $name = $student["name"]; echo $name . " "; } //輸出:小明 小紅 小剛
如果我們需要按照學生的成績進行排序,可以使用usort函數,并傳入一個比較函數。比較函數接收兩個參數,分別表示要比較的數據。如果第一個參數比第二個參數小,則返回負數;如果第一個參數比第二個參數大,則返回正數;如果兩個參數相等,則返回0。
function compare($a, $b) { if ($a["score"] == $b["score"]) { return 0; } return ($a["score"] < $b["score"]) ? -1 : 1; } usort($students, "compare"); foreach($students as $student) { $name = $student["name"]; $score = $student["score"]; echo $name . "的成績是" . $score . "<br>"; } //輸出: //小紅的成績是85 //小明的成績是90 //小剛的成績是92
如果我們只需要獲取某一列的值,可以使用數組映射函數array_map。將該函數作用于二維數組的某一列,即可得到一個一維數組。
$scores = array_map(function ($student) { return $student["score"]; }, $students); print_r($scores); //輸出:Array ( [0] => 90 [1] => 85 [2] => 92 )
以上是獲取二維數組中某一列的幾種方法。注意,動態獲取某一列的方法可能導致性能問題,盡量在編寫代碼時保持一致的數據結構。