如何在结构化数组中查找元素

时间:2010-11-14 00:02:10

标签: php arrays stdclass

下面的代码返回一个“附加”到帖子的图像数组......

$args = array(
    'post_type' => 'attachment',
    'numberposts' => -1,
    'post_status' => null,
    'post_parent' => 0
); 
$excludeImages = get_posts($args);

//的var_dump

var_dump ($excludeImages)

// yield(数组中第一项5的片段)

array(5){[0]=> object(stdClass)#194 (24) 
        {["ID"]=> int(46) 
         ["guid"]=> string(59) "http://localhost/mysite/wp-content/uploads/avatar.png"}

问题: 如何从任何给定的数组项中提取图像文件名(在本例中为avatar.png),其中模式总是[“guid”] => string(int)“path-to-image”?

2 个答案:

答案 0 :(得分:0)

只需使用basename

$fileName = basename($excludeImages[0]->guid);
编辑:作为上面提到的评论者,我认为您可能需要箭头符号而不是像$ excludeImages [0] [“guid”]中的“guid”索引。我最初没有注意到它是一个物体。看来你有一个对象数组,而不是结构化/嵌套数组。

http://php.net/manual/en/function.basename.php
http://www.php.net/manual/en/function.pathinfo.php

答案 1 :(得分:0)

stdClass基本上是PHP的默认类(不是基础!)。它没有任何方法或属性,它是一个空类。它用作容器。例如,您可以通过将数组转换为对象来创建这样的类。

你的var_dump意味着你的数组的第一个元素是一个具有ID和guid属性的stdClass对象。因此,此代码将检索完整的guid:

$path = $excludeImages[0]->guid;

如果您只想检索文件名,可以使用basename():

echo basename($path); // avatar.png

有关stdClass的更多信息,请参阅this question