I have a dataset obtained from MySQL that goes like this:
Array
(
[0] => Array
(
[views] => 14
[timestamp] => 06/04
[views_scaled] => 4.9295774647887
[unix_time] => 1239022177
)
[1] => Array
(
[views] => 1
[timestamp] => 19/04
[views_scaled] => 0.35211267605634
[unix_time] => 1240194544
)
...
...
...
) 1
(it's post-processed, 'timestamp' was really a timestamp before, but that doesn't matter anyways)
The array is stored on $results, and in the middle of my code I do something like this:
$results = array_merge($results, $new_days);
$a = $results;
foreach ($results as $row)
{
$unix_time[] = $row['unix_time'];
}
$b = $results;
The problem: $a and $b are both different. The first one shows the array as it's supposed to, and the second one has the same count(), but it's fourth element is a duplicate from the last one. As far as I know, I'm not passing anything by reference, so $results Isn't meant to change (maybe the pointer, but not it's content). I'm using PHP 5.2.4 on Mac OS X 10.5.2.
The obvious question: Is this somehow the intended behavior, a bug or I'm doing something wrong here? (not a boolean answer please ;)
EDIT: Thank you all for the interest, I don't know exactly how much extra code should I post, I don't do much before except for retrieving the data from the DB and a
foreach to parse the timestamp and build a new array ($new_days) for the missing days. This is all working fine.
This code goes after the one I've posted early:
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() is a custom function to generate an array from a column in a typical DB-dumped dataset)
EDIT 2: Thanks again, here's the full snippet and the output from the
$results array $a and $b (also referenced in the code's comments).