如何在php中将数据推送到数组中

时间:2011-04-13 15:41:14

标签: php mysql arrays

亲爱的, 我想将数据推送到数组中。我正在使用流动的代码。有两个数组。一个持有键和第二个值。我正在使用流动代码

while($data=mysql_fetch_array($result))
{   
     foreach ($arrTemp as $val) 
    {                   
        array_push($arrKeys, $val);
        array_push($arrValues, $data[$val]);                
    }               
}

print_r($arrKeys);
print_r($arrValues);

$arrReturn = array_combine($arrKeys,$arrValues);

................................... 并获得两个数组的流动结果。

Array ( [0] => due_date [1] => flag_code [2] => due_date [3] => flag_code [4] => due_date [6] => flag_code  )


Array ( [0] => 12:04:2011 [1] => 0 [2] => 13:04:2011 [3] => 0 [4] => 14:04:2011 [6] => 0  )

当我尝试使用array_combined函数组合数组时,它只返回两个值的数组,如:Array (due_date => 14:04:2011 flag => 0)

我怎样才能获得单个数组中的所有值.......

2 个答案:

答案 0 :(得分:2)

因为你有多个相同的数组键。首先它插入due_date,然后flag_code,然后它会尝试插入另一个due_date,但由于这已存在于数组中,它将覆盖它。因此,数组中剩下的唯一值将是最后一对。

解决方案是在一个数组中没有多个相同的键(您的due_dateflag_code

你可以这样做:

foreach ($arrTemp as $val) {                   
    $arrReturn[] = array($val => $data[$val];
}

这将为您提供键入数组的每组结果,如下所示:

$arrReturn[0] = array (due_date => 14:04:2011 flag => 0);
$arrReturn[1] = array (due_date => 14:04:2011 flag => 0);
$arrReturn[2] = array (due_date => 14:04:2011 flag => 0);
...

答案 1 :(得分:1)

$ctr = 0;
foreach ($arrKeys as $id => $key) {
  $res_array[$ctr][$key] = $arrValues[$id];
  if ($key == 'flag_code') $ctr++;
  }

print_r($res_array);

输出:

Array
(
    [0] => Array
        (
            [due_date] => 12:04:2011
            [flag_code] => 0
        )

    [1] => Array
        (
            [due_date] => 13:04:2011
            [flag_code] => 0
        )

    [2] => Array
        (
            [due_date] => 14:04:2011
            [flag_code] => 0
        )

)