访问多个数据库行中的数组中的数组

时间:2016-09-21 13:38:14

标签: php arrays

我的数据库结构如下所示:

enter image description here

我试图将价格存储为变量,这样如果我引用cage_linear_feet,它将显示225。

我尝试过以下代码:

   $sql  = "SELECT * from pricing WHERE region = '$region' ";

   $result = mysqli_query($conn, $sql);

   while($rows=mysqli_fetch_assoc($result)){

   $test[] = array($rows['field']=>$rows['price']);

   }

   print_r ($test); 

显示以下内容:

Array ( [0] => Array ( [cage_linear_feet] => 225 ) [1] => Array ( [cage_doors] => 1800 ) )

如何访问" 225"和" 1800"值确保如果将更多记录添加到数据库,它仍将获取正确的记录。例如,如果添加了记录,则cage_doors的$ test 1可能会发生变化。

3 个答案:

答案 0 :(得分:2)

我的观点是,将键值对包装在各自独立的数组中是没有意义的。我会改变这一行:

$test[] = array($rows['field']=>$rows['price']);

到此:

$test[$rows['field']] = $rows['price'];

数据关联将保留在一个关联数组($ test)的key =>值对中。所以echo $ test [' cage_linear_feet'] ---> 225

答案 1 :(得分:1)

如果要将field设置为数组键

$sql  = "SELECT * from pricing WHERE region = '$region' ";
$result = mysqli_query($conn, $sql);

while($rows=mysqli_fetch_assoc($result)){
 $test[$rows['field']] = $rows['price']);
}
print_r ($test);

不,你应该能够像field那样引用:

echo $test['cage_doors'];
// returns 1800

答案 2 :(得分:0)

列'字段'是唯一的吗?如果是这样,请执行以下操作:

while($rows=mysqli_fetch_assoc($result)){
    $test[$rows['field']] = $rows['price'];
}

这会将数组中的键设置为字段,即

Array('cage_doors' => 1800)

如果它不是唯一的,我建议做类似的事情:

while($rows=mysqli_fetch_assoc($result)){
    $test[$rows['field'] . '_' . $rows['pricing_id']] = $rows['price'];
}

这会将数组中的键设置为字段和定价ID,这使其成为唯一的,即

Array('cage_doors_2' => 1800)