2017-03-14 108 views
0

我已經從數據庫中提取了3個數組,並將它們放入關聯數組中。打印出從SQL數據庫中提取的關聯數組

我已經學會在評論中顯示如下所示的數組,但這似乎不起作用?我怎樣才能做到這一點?

while($row = mysql_fetch_array($query)) //fetching row in db 
{ 
    $weight = $row['weight']; 
    $height = $row['height']; 
    $bmi = round($weight/(pow(($height/100),2)),2); //calculates bmi 

    $arrName[] = $row['name']; //main name array 
    $arrGender[] = array($row['name'] => $row['gender']); //this and below are associative arrays 
    $arrBmi[] = array($row['name'] => $bmi); 

} 

foreach($arrName as $key=>$value){ 
    echo "$value is of gender {$arrGender[$value]} and has a bmi of {$arrBmi[$value]}"; //this line 
} 
+1

**不要**使用**棄用和不安全**'mysql_ *'函數。從PHP 5.5(2013年)開始,它們已被棄用,並且在PHP 7中(2015年)完全刪除。改用MySQLi或PDO。 –

+0

錯誤:數組到字符串的轉換 – Pete

+0

@MagnusEriksson你能指點我一個等價的函數嗎? – Pete

回答

2

喜歡這個:

$arrGender[$row['name']] = $row['gender'] 
$arrBmi[$row['name']] = $bmi); 

你這樣做的樣子,你要指定多個子陣列,以數字指標,而不是使用名稱的關鍵。如果最終以這種方式完成此操作,需要注意的一件事是,如果查詢結果中包含非唯一名稱,則該數組鍵的值將被覆蓋以用於後續重複名稱。

雖然它看起來並不像你真的需要第二個循環。您可以輸出在while循環同樣的事情,你獲取結果:

while ($row = mysql_fetch_array($query)) //fetching row in db 
{ 
    $bmi = round($row['weight']/(pow(($row['height'] /100),2)),2); //calculates bmi 
    echo "$row[name] is of gender $row[gender] and has a bmi of $bmi"; //this line 
} 
1

這是一個奇怪的陣列來構建和我將簡化它,但使用$key和名稱($value)來訪問別人:

echo "$value is of gender {$arrGender[$key][$value]} 
     and has a bmi of {$arrBmi[$key][$value]}"; 

爲了簡單起見需要使用數組,因爲它來自於獲取:

$array[] = ['name' => $row['name'], 
      'gender' => $row['gender'], 
      'bmi' => $bmi]; 
在循環

然後:

echo "{$value['name']} is of gender {$value['gender']} 
     and has a bmi of {$value['bmi']}";