У меня есть набор данных, полученный из MySQL, который выглядит следующим образом:
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
(это постобработка, 'timestamp' была действительно временной меткой раньше, но это не имеет значения в любом случае)
Массив хранится в $results
, и в середине моего кода я делаю что-то вроде этого:
$results = array_merge($results, $new_days);
$a = $results;
foreach ($results as $row)
{
$unix_time[] = $row['unix_time'];
}
$b = $results;
Проблема: $a
и $b
различны. Первый показывает массив, как он должен, а второй имеет тот же count()
, но его четвертый элемент является дубликатом от последнего. Насколько я знаю, я не передаю ничего по ссылке, поэтому $results
не предназначен для изменения (возможно, указатель, но не его содержимое). Я использую PHP 5.2.4 на Mac OS X 10.5.2.
Очевидный вопрос: Это как-то предполагаемое поведение, ошибка или я здесь что-то не так делаю? (не логический ответ, пожалуйста;)
<ч />
РЕДАКТИРОВАТЬ: Спасибо всем за интерес, я не знаю точно, сколько дополнительного кода я должен публиковать, я не делаю много раньше, за исключением получения данных из БД и 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()
- это пользовательская функция для генерации массива из столбца в типичном наборе данных, выгруженном из БД)
<ч />
РЕДАКТИРОВАТЬ 2: Еще раз спасибо, вот полный фрагмент и вывод из массива $results
$a
и $b
(также упоминается в комментариях к коду).