如何使用 array_column 作为 3 级密钥?

How to use array_column for a 3rd level key?

我一直在使用 YouTube api。播放列表项的结构如下:

[{
    "publishedAt": datetime,
    "channelId": string,
    "title": string,
    "description": string,
    "thumbnails": {
      (key): {
        "url": string,
        "width": unsigned integer,
        "height": unsigned integer
      }
    },
    "channelTitle": string,
    "playlistId": string,
    "position": unsigned integer,
    "resourceId": {
      "kind": string,
      "videoId": string,
    }
  }]

对于每个项目,我都想提取 videoId(在 resourceId 中)。 对于多维数组(字段集),我可以使用 array_column array_column($array,'title') 例如。如何检索 videoId 属性?

我知道你是从哪里来的,不幸的是,PHP 不像 Javascript 那样优雅,在 JS 中你会这样做:

const videoIds = data.map(item => item.resourceId.videoId);

如果您不想在 PHP 中执行 foreach,您可以做的是:

$videoIds = array_map(function ($item) {
    return $item['resourceId']['videoId'];
}, $data);

请注意,这种方法在性能方面没有任何好处,最终我们只是循环遍历数组中的所有项目。