我有一个从 MySQL 获得的数据集,如下所示:
大批 ( [0] => 数组 ( [观看次数] => 14 [时间戳] => 06/04 [views_scaled] => 4.9295774647887 [unix_time] => 1239022177 ) [1] => 数组 ( [观看次数] => 1 [时间戳] => 19/04 [views_scaled] => 0.35211267605634 [unix_time] => 1240194544 ) ... ... ... ) 1
(它是后处理的,'timestamp' 之前确实是一个时间戳,但无论如何都无所谓)
数组存储在 上$results
,在我的代码中间我做了这样的事情:
$results = array_merge($results, $new_days); $a = $结果; foreach ($results 为 $row) { $unix_time[] = $row['unix_time']; } $b = $结果;
问题: $a
两者$b
都不同。第一个显示了应有的数组,第二个具有相同的count()
,但它的第四个元素与最后一个元素重复。据我所知,我没有通过引用传递任何东西,所以$results
不打算改变(也许是指针,但不是它的内容)。我在 Mac OS X 10.5.2 上使用 PHP 5.2.4。
显而易见的问题:这是某种预期的行为,错误还是我在这里做错了什么?(请不是布尔答案;)
编辑:谢谢大家的兴趣,我不知道我应该发布多少额外的代码,除了从数据库中检索数据和
foreach
解析时间戳并构建一个新数组之外,我之前没有做太多事情($new_days
) 为失踪的日子。这一切都很好。
这段代码在我早期发布的代码之后:
array_multisort($unix_time, SORT_ASC, $results); $days = implode('|', array_pluck('timestamp', $results)); $views = implode('|', array_pluck('views', $results)); $views_scaled = implode(',', array_pluck('views_scaled', $results));
(array_pluck()
是从典型的 DB 转储数据集中的列生成数组的自定义函数)
编辑2:再次感谢,这是完整的片段和
$results
数组的输出$a
和$b
(也在代码的注释中引用)。