Как получить массив в правильном порядке?
Я печатаю массив, но он не выбирается в правильном порядке.
Я хочу, чтобы каждое значение трека содержало массив даты и массив числа соответственно. пожалуйста, дайте решение. Любая помощь будет высоко оценена.
Мой код для массива выборки:
<?php
foreach($posts as $post)
{
$array['track_value'][] = $post->track_value;
$array['track_value']['date'][] = $post->date;
$array['track_value']['num'][] = $post->num;
}
?>
Из этого я получаю неправильное значение, подобное этим:
<?php
Array (
[track_value] => Array
(
[0] => mobile
[date] => Array
(
[0] => 2015-08-23
[1] => 2015-08-24
[2] => 2015-08-23
[3] => 2015-08-24
[4] => 2015-08-22
[5] => 2015-08-23
[6] => 2015-08-24
)
[num] => Array
(
[0] => 1
[1] => 1
[2] => 1
[3] => 2
[4] => 1
[5] => 1
[6] => 1
)
[1] => mobile
[2] => laptop
[3] => laptop
[4] => pc
[5] => pc
[6] => pc
)
)
?>
Выход должен быть следующим:
<?php
Array (
[track_value] => Array
(
[0] => mobile
Array
(
[date] => Array
(
[0] => 2015-08-23
[1] => 2015-08-24
)
[num] => Array
(
[0] => 1
[1] => 1
)
)
[1] => laptop
Array
(
[date] => Array
(
[0] => 2015-08-23
[1] => 2015-08-24
)
[num] => Array
(
[0] => 1
[1] => 2
)
)
[2] => pc
Array
(
[date] => Array
(
[0] => 2015-08-23
[1] => 2015-08-24
[2] => 2015-08-23
)
[num] => Array
(
[0] => 1
[1] => 1
[2] => 1
)
)
)
)
?>
Я не уверен, что вы пытаетесь сделать, но, возможно, это поможет вам в пути:
foreach($posts as $post)
{
$array['track_value'][$post->track_value]['date'][] = $post->date;
$array['track_value'][$post->track_value]['num'][] = $post->num;
}
Это даст вам выход:
Array(
'track_value' => Array(
'mobile' => Array(
'date' => Array(
0 => '2015-08-25',
1 => '2015'08'26',
),
'num' => Array(
0 => 1337,
1 => 13337,
),
),
'pc' => ...
),
)
Попробуй это:
$tracks = [];
foreach($posts as $k1 as $v1) {
if (is_array($value)){
foreach ($value as $k2 => $v2) {
$tracks[$k1][$k2] = $v2;
}
}
$tracks[$k1] = $v1;
}
[$key]
поэтому он будет переопределять предыдущую сохраненную таким образом.
Попробуй это:
$arr = [];
foreach($posts as $key => $val)
$arr['track_value'][$val->track_value][] = ['date' => $val->date, 'num' => $val->num];
}
print_r($arr);