循环失败只会迭代数组中的最后一个数据序列

时间:2015-07-14 10:34:02

标签: php arrays

我在表格上有一些数据行,如下所示:

+-------------------+-------+
| criteria          | value |
+-------------------+-------+
| Pengalaman Kerja  |     4 |
| Pendidikan        |     3 |
| Usia              |     5 |
| Status Perkawinan |     2 |
| Alamat            |     6 |
| Pengalaman Kerja  |     3 |
| Pendidikan        |     1 |
| Usia              |     4 |
| Status Perkawinan |     2 |
| Alamat            |     1 |
+-------------------+-------+
10 rows in set (0.00 sec)

当我使用MySQLI fetch_object在PHP中迭代上面的数据时,我想创建最终会像这样的新数组:

Array
(
    [Pengalaman Kerja] => Array
        (
            [1] => 4
            [2] => 3
        )

    [Pendidikan] => Array
        (
            [1] => 3
            [2] => 1
        )

    [Usia] => Array
        (
            [1] => 5
            [2] => 4
        )

    and so on..
)

我几乎没有尝试过这些数组的东西,最终代码如下所示:

 $result      = $db->query($sql);

 while($row=$result->fetch_object()){

   if(!isset($isi[$row->criteria])){
     $isi[$row->criteria] = array();
   }

   $isi[$row->criteria] = 
   array(1 => $data[$row->name][$row->criteria]);  

   $number = count($data);
   for ($i=2; $i<=$number; $i++) { 
      array_push($isi[$row->criteria], $row->value);
   }
}

包装数组是正确的,错误在每个包装数组的值中。上面的代码只占了最后一个  数据序列:

 Array
 (
    [Pengalaman Kerja] => Array
       (
            [1] => 4
            [2] => 4
       )

    [Pendidikan] => Array
       (
            [1] => 3
            [2] => 3
       )

    [Usia] => Array
       (
            [1] => 5
            [2] => 5
       )

    and so on..
)

你们能帮助我详细说明代码中的错误以及如何解决它以获得预期的结果吗?

提前谢谢。

编辑:

这就是我循环数据的方式

1 个答案:

答案 0 :(得分:1)

if(!isset($isi[$row->criteria])){
     $isi[$row->criteria] = array();
}
$isi[$row->criteria][] = $row->value;