2017-03-14 71 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']}";