生成数组值列表时奇怪的PHP行为

时间:2014-09-12 16:26:07

标签: php arrays multidimensional-array foreach

我有一个以下形式的多维PHP数组:

Array
(
    [0] => Array
        (
            [id] => 45
            [date] => 2013-05-16
        )

    [1] => Array
        (
            [id] => 30
            [date] => 2013-12-10
        )

    [2] => Array
        (
            [id] => 26
            [date] => 2014-03-27
        )

    [3] => Array
        (
            [id] => 34
            [date] => 2014-03-27
        )

)

我正在尝试使用以下PHP代码生成以逗号分隔的[id]值列表:

foreach ($my_array as $key => $value) { 
    if ($key == 0) {
        $id_list = $value[id];
    }
    if ($key !== 0 ) {
        $id_list .= "," . $value[id];
    }
}

我希望这会回归

45,30,26,34

...但由于某种原因,它会返回

45,30,26,26

即。倒数第二个ID重复,最终ID丢失。我已经盯着这一段时间,但我无法看到我出错的地方。我错过了一些明显的东西吗?

1 个答案:

答案 0 :(得分:5)

更好的解决方案是根本不使用if()

$ids = array();
foreach($arr as $val) {
   $ids[] = $val['id'];
}

$id_str = implode(',', $ids);