Как найти элемент в структурированном массиве - PullRequest
0 голосов
/ 14 ноября 2010

Код ниже возвращает массив изображений, которые "прикреплены" к сообщениям ...

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

// var_dump

var_dump ($excludeImages)

// выходы (фрагмент первого элемента из 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 голосов
/ 14 ноября 2010

stdClass - это класс по умолчанию для PHP (не базовый!). У него нет метода или атрибута, это пустой класс. Он используется в качестве контейнера. Вы можете создать такой класс, приведя массив к объекту, например.

Ваш var_dump означает, что первым элементом вашего массива является объект stdClass, имеющий атрибуты ID и guid. Таким образом, этот код будет получать полный guid:

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

Если вы хотите получить только имя файла, вы можете использовать basename ():

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

Вы можете увидеть этот вопрос для получения дополнительной информации о stdClass.

0 голосов
/ 14 ноября 2010

просто используйте базовое имя

$fileName = basename($excludeImages[0]->guid);

РЕДАКТИРОВАТЬ: Как упоминалось выше, я думаю, что вам может понадобиться стрелка вместо индексации для "guid", как в $ excludeImages [0] ["guid"]. Сначала я не заметил, что это объект. Кажется, у вас есть массив объектов, а не структурированный / вложенный массив.

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

...