创建并推送到数组

时间:2017-12-01 12:34:18

标签: php arrays

我正在尝试创建一个数组(如果它尚不存在),然后将值推送到它。

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
    )

我不理解什么?

2 个答案:

答案 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;
相关问题