所以我有一个 var_dump($instagram->get_images());
它给了我以下输出:
我想使用 array_map 来映射所有属性,并稍后在 foreach 循环中使用它们..但我遇到了一些问题:
这是我的尝试:
$mediaUrls = array_map(function($entry) {
return [
'media_url' => $entry['media_url'],
];
}, $instagram->get_images());
我收到以下错误:
有人可以帮助我通过对象正确进行 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 循环中使用它们。”
您可以稍后重申
$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'] }
如果您只想获取仅包含网址的数组,可以使用
array_column
更简单地实现。$images = $instagram->get_images(); $mediaUrls = array_column($images->data, 'media_url');
(这不会给你相同的结果。它将是一个字符串数组而不是一个数组数组。)
关于php - Array_map 通过对象数组并抓取属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60042755/