1
我從一個MySQL SELECT查詢此數據...如何把扁平MySQL數據到一個多維數組
+--------+----------+---------+--------------+----------------+
| vid_id | vid_name | file_id | file_url | tag_name |
+--------+----------+---------+--------------+----------------+
| 1 | Video 1 | 1 | video_1.mp4 | Lorem ipsum |
| 1 | Video 1 | 2 | video_1.webm | Lorem ipsum |
| 2 | Video 2 | 3 | video_2.mp4 | Dolor sit amet |
| 2 | Video 2 | 4 | video_2.webm | Dolor sit amet |
+--------+----------+---------+--------------+----------------+
...這我試圖進入一個多維PHP數組,像這樣:
Array
(
[0] => Array
(
[name] => Video 1
[tag] => Lorem ipsum
[files] => Array
(
[0] => video_1.mp4
[1] => video_1.webm
)
)
[1] => Array
(
[name] => Video 2
[tag] => Dolor sit amet
[0] => Array
(
[0] => video_2.mp4
[1] => video_2.webm
)
)
)
當我使用變量來檢查視頻名是否已經添加到數組中時,我會關閉它。但是,我無法弄清楚如何在下一次迭代中只將視頻文件添加到嵌套數組。這是我最好的嘗試至今:
<?php
// Define a variable to keep track of iterations:
$title = '';
while ($row = mysqli_fetch_assoc($r)) {
if ($title != $row['vid_name']) {
// Grab all the data:
$video_data[] = array(
'name' => $row['vid_name'],
'tag' => $row['tag_name'],
$files = array(
'file' => $row['file_url']
)
);
} else {
// Grab only the file URL and add it to the files array:
$files[] = $row['file_url'];
}
// Update the tracking variable:
$title = $row['vid_name'];
}
?>
這不起作用:
Array
(
[0] => Array
(
[name] => Video 1
[tag] => Lorem ipsum
[0] => Array
(
[file] => video_1.mp4
)
)
[1] => Array
(
[name] => Video 2
[tag] => Dolor sit amet
[0] => Array
(
[file] => video_2.mp4
)
)
)
我敢肯定,我想要實現是可能的,但我沒有足夠的知識的PHP來算出這一個(我懷疑有更好的方法來獲得我想要的數組)。建議和指針非常感謝!
非常感謝 - 那就是訣竅。雖然有一個小錯誤:if語句缺少一個右括號(我試圖編輯你的答案,但它不會讓我)。無論如何 - 我會在一分鐘內接受你的回答。 – rkhff
@rkhff固定,在前括號之前缺少括號。 – Devon