php - Array_map 通过对象数组并抓取属性

标签 php arrays

所以我有一个 var_dump($instagram->get_images()); 它给了我以下输出:

enter image description here

我想使用 array_map 来映射所有属性,并稍后在 foreach 循环中使用它们..但我遇到了一些问题:

这是我的尝试:

$mediaUrls = array_map(function($entry) {
    return [
        'media_url' => $entry['media_url'],
    ];
}, $instagram->get_images());

我收到以下错误:

enter image description here

有人可以帮助我通过对象正确进行 array_mapping,然后能够使用 foreach ($MediaUrls as $media) 等...

最佳答案

错误是正确的。您正在对象上使用数组映射。但该对象确实有一个 ->data 属性,它是一个数组。但数组中的项目是对象,因此您需要引用它们的属性,而不是使用数组语法。

$images = $instagram->get_images();
$mediaUrls = array_map(function($entry) {
    return [
        'media_url' => $entry->media_url,
    ];
}, $images->data);

一些建议。您说,“我想使用 array_map 来映射所有属性,并稍后在 foreach 循环中使用它们。”

  1. 您可以稍后重申 $images->data,因此我并没有真正看到为此目的创建另一个数组的值(value)

    foreach ($images->data as $imageData) {
        // do something with $imageData->media_url
    }
    

    这几乎与使用 array_map 迭代您创建的数组完全相同。

    foreach ($images->data as $imageData) {
        // do something with $imageData['media_url']
    }
    
  2. 如果您只想获取仅包含网址的数组,可以使用 array_column 更简单地实现。

    $images = $instagram->get_images();
    $mediaUrls = array_column($images->data, 'media_url');
    

    (这不会给你相同的结果。它将是一个字符串数组而不是一个数组数组。)

关于php - Array_map 通过对象数组并抓取属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60042755/

相关文章:

php - 数据未插入 MySQL

php - Codeigniter - 自动加载带有别名的模型

PHP 尝试在 while 循环中向数组添加值

c - 有没有办法在 C 中创建一个既有整数又有字符的二维数组?

PHP,如何查找字符串中是否有某个单词?

php - 如何阅读 facebook signed_request 以获取 user_id

javascript - 如何根据单词作为键分隔符读取文本文件的 block ?

Javascript 数组变为 null

java - 将字符串拆分为不同的数组索引 Java?

java - 排列单词形成回文