无法将所有数组项推送到第二个数组PHP中

时间:2014-07-15 13:19:22

标签: php

所以我有一个数组($items),里面有大约900个项目。我想要做的是,对于阅读($key["status"] == 1)的项目,大约300个项目 - >将这些推送到具有两个属性(($lifeSpanArray)added_date)的第二个数组read_date

出于某种原因,当我尝试将项目推入生命周期数组时,我只有一个项目。就像我说的那样,有大约300个状态读取的东西 - 我可以把它们丢弃,所以我相信我在构建我的lifeSpanArray并推入它时犯了一个错误。

任何帮助非常感谢!

$items = $pocket->retrieve($params, $accessToken);
$numberArticles = count($items["list"]);
$hasRead = 0;
$hasNotRead = 0;

$readDatesArray = array();
$lifeSpanArray = array();


foreach ($items['list'] as $key) {

    if ($key["status"] == 1) {
        $hasRead++;
        $timeAdded = date('m/d/Y', $key["time_added"]); 
        $dateRead = date('m/d/Y', $key["time_read"]);

        // Where the problem is - only one item added
        $lifeSpanArray['timeAdded'] = $timeAdded;
        $lifeSpanArray['timeRead'] = $dateRead;

        //Push into the read dates array
        array_push($readDatesArray, $dateRead);

    }
    else {
        $hasNotRead++;
    }

}

var_dump($lifeSpanArray);

2 个答案:

答案 0 :(得分:2)

当你在每次迭代时覆盖你的$lifeSpanArray数组时,你必须只获得最后一个条目,所以你需要的是一个二维数组,

改变这一点,

//Push into lifespan array
$lifeSpanArray['timeAdded'] = $timeAdded;
$lifeSpanArray['timeRead'] = $dateRead;

要,

 $lifeSpanArray[] = array('timeAdded' => $timeAdded,'timeRead' => $dateRead);

答案 1 :(得分:0)

$lifeSpanArray['timeAdded'] = $timeAdded;
$lifeSpanArray['timeRead'] = $dateRead;

对于上述代码,您实际上是将 scalar value 分配给$lifeSpanArray['timeAdded']$lifeSpanArray['timeRead']

要将它们视为数组并将值推送给它们,首先应首先将timeAdded和timeRead初始化为数组:

$lifeSpanArray = array(
    'timeAdded' => array(),
    'timeRead' => array()
);

foreach循环中将值推送到它们:

$lifeSpanArray['timeAdded'][] = $timeAdded;
$lifeSpanArray['timeRead'][] = $dateRead;