Ben böyle gider MySQL elde edilen bir veri kümesi var:
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
(O sonrası işlenmiş, 'damgası' önce gerçekten bir zaman damgası, ama bu zaten önemli değil)
Dizisi $results
saklanan ve benim kod ortasında böyle bir şey yapmaktır:
$results = array_merge($results, $new_days); $a = $results; foreach ($results as $row) { $unix_time[] = $row['unix_time']; } $b = $results;
The problem: $a
ve $b
hem de farklıdır. Bu gerekiyordu gibi ilk dizi gösterir ve ikinci bir aynı count()
vardır, ama dördüncü unsur geçen biri yineleniyor bulunuyor. Bildiğim kadarıyla, ben referans şey geçirerek değilim, bu yüzden $results
değiştirmek anlamına gelmez mi (belki işaretçi, ama içerik değil). Mac OS X 10.5.2 üzerinde PHP 5.2.4 kullanıyorum.
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.
Bu kod erken gönderdiniz birinin peşinden gider:
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).