如何存储关联数组php MySQL

时间:2014-05-07 01:32:16

标签: php mysql associative-array

我想将查询结果存储为关联数组。下面是我在下面生成查询结果的代码。

<?php

$include('config.php') //mysql connection file
$result = mysql_query("SELECT daystime.*, Sprinkler_ID FROM daystime, scheduler WHERE   daystime.id = scheduler.DaysTime_ID ORDER BY daystime.id, Sprinkler_ID") or trigger_error(mysql_error());

$data_array = array();
while($rs = mysql_fetch_assoc($result))
{
    $key=$rs['id'];
    $value=$rs['Sprinkler_ID'];
    $data_array[$key] = [$value];
}

foreach ($data_array as $key => $value)
{
    echo $key.'=>'.$value.'<br />';
}
?>

the resuting table

这使我的输出为

 19=>Array
 20=>Array
 21=>Array
 27=>Array
 29=>Array

但我应该

 19 -> [4,5],
 20 -> [5], 
 21=>[4,6], 
 // and so on

3 个答案:

答案 0 :(得分:2)

$value是一个数组,你不能在数组上使用echo

不要循环只做var_dump()

$data_array = array();
while($rs = mysql_fetch_assoc($result)){
    $data_array[$rs['id']][]=$rs['Sprinkler_ID'];
}
var_dump($data_array);//or print_r($data_array);

答案 1 :(得分:1)

<?php
$include('config.php') //mysql connection file
$result = mysql_query("SELECT daystime.*, Sprinkler_ID FROM daystime, scheduler WHERE   daystime.id = scheduler.DaysTime_ID ORDER BY daystime.id, Sprinkler_ID") or trigger_error(mysql_error());

$data_array = array();
while($rs = mysql_fetch_assoc($result))
{
    $key=$rs['id'];
    $value=$rs['Sprinkler_ID'];
    $data_array[$key] = [$value];
}
$out = '';
$count = count($data_array);
$iter = 0;
foreach ($data_array as $key => $value)
{
    $out.= $key.'=>[';
    foreach ($value as $val) {
        $out.=$val.',';
    }
    $out = rtrim($out, ",");
    $out.= ']';
    if ($iter < ($count-1)) {
        $out.=',<br />';
    }
    $iter++;
}
echo $out;

你需要一个内部foreach循环来处理$ value中的数组,因为这是一个多维数组。前面是一个示例,说明如何生成您请求的确切输出。如果您正在寻找值的转储,请使用@meda提供的var_dump解决方案。

答案 2 :(得分:1)

您的代码中存在两个问题。第一个是$value是一个数组,第二个是这个数组只包含一个项目。

试试这个:

$data_array = array();
while($rs = mysql_fetch_assoc($result))
{
    $key=$rs['id'];
    $value=$rs['Sprinkler_ID'];
    $data_array[$key][] = $value;
}

foreach ($data_array as $key => $values)
{
    echo $key.'=> [';
    foreach($values as $value)
       echo $value . ',';
    echo ']<br />';
}