我正在尝试创建一个数组(如果它尚不存在),然后将值推送到它。
foreach($playlist->items as $item) {
$str = $item->snippet->title;
$id = $item->snippet->resourceId->videoId;
$substring = substr($str, 0, 5);
$substring = strtolower($substring);
if (is_array($substring)) {
array_push($substring, $id);
}
else {
$substring = array();
array_push($substring, $id);
}
array_push($artists, $substring);
}
我正在迭代从Youtube播放列表中检索到的数据,因此我使用foreach查看每个项目,其中包含一个标题' - 艺术家和一个' id' - 视频ID。我对每个标题进行子串,并尝试使用它将艺术家分组到特定的数组中。
如果该艺术家已经存在一个阵列,我会尝试推送该ID'到那个数组的末尾。如果一个数组不存在,我创建一个数组,然后按下' id'到那个阵列上。
最后,我尝试将每个艺术家阵列推向艺术家'阵列。
当我打印出$ artists数组时我得到的是这样的
Array
(
[0] => Array
(
[0] => 1_YUrdjLyAU
)
[1] => Array
(
[0] => Gp8lDW2LUM0
)
...
[543] => Array
(
[0] => Exa0CzlCb3Y
)
每个$ id都在它自己的数组中,应该根据$ substring将它们组合在一起。 e.g
Array
(
[0] => Array
(
[0] => 1_YUrdjLyAU
[1] => 1_YUrdjLyAU
[2] => 1_YUrdjLyAU
[3] => 1_YUrdjLyAU
[4] => 1_YUrdjLyAU
)
[1] => Array
(
[0] => Gp8lDW2LUM0
[1] => 1_YUrdjLyAU
[2] => 1_YUrdjLyAU
[3] => 1_YUrdjLyAU
)
我不理解什么?
答案 0 :(得分:1)
以下是解决问题的简单方法:
$artists = array();
foreach($playlist->items as $item) {
$artist = $item->snippet->artist; // however the artist name is fetched..
$id = $item->snippet->resourceId->videoId;
$artists[$artist][] = $id
}
这样,您无需检查艺术家是否已经在数组中,它将自动执行此操作并将视频ID附加到艺术家。
$artists
数组将是assosiative,我认为你不能使用数字数组
该数组将如下所示:
Array
(
['Jon Lajoie'] => Array
(
[0] => 1_YUrdjLyAU
[1] => lf3hflkap39
[2] => 1vt1455zzbe
[3] => 6dthg3drgjb
[4] => jfop3ifjf3p
)
['Lonely Island'] => Array
(
[0] => Gp8lDW2LUM0
[1] => 5he5hj67j7r
[2] => krt7tkktzk8
[3] => we54w4ggsrg
)
)
答案 1 :(得分:0)
使用substring作为数组键并执行以下操作:
**Remove**
if (is_array($substring)) {
array_push($substring, $id);
}
else {
$substring = array();
array_push($substring, $id);
}
array_push($artists, $substring);
**Replace**
$artist[$substring][]=$id;