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

use*_*046 0 php arrays foreach multidimensional-array

我有一个以下形式的多维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
        )

)
Run Code Online (Sandbox Code Playgroud)

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

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

我希望这会回来

45,30,26,34
Run Code Online (Sandbox Code Playgroud)

......但由于某种原因它会回来

45,30,26,26
Run Code Online (Sandbox Code Playgroud)

即倒数第二个ID重复,最终ID丢失.我一直在盯着这一段时间,但我看不出我哪里出错了.我错过了一些明显的事吗?

Mar*_*c B 5

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

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

$id_str = implode(',', $ids);
Run Code Online (Sandbox Code Playgroud)