所以我有一个数组($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);
答案 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;