2010-11-14 43 views
0

Le code ci-dessous retourne un tableau d'images qui sont "attachés" à des postes ...Comment trouver un élément dans un tableau structuré

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

// var_dump

var_dump ($excludeImages) 

// rendements (un extrait du premier élément 5 du tableau)

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

la question: Comment puis-je extraire le nom de fichier de l'image (dans ce cas, avatar.png) à partir d'un élément de tableau donné où le motif est toujours ["guid"] = > string (int) "path-to-image"?

+0

Je ne connais pas vraiment la notation var_dump. Est-ce à dire que le 0ème élément du tableau est un objet avec des attributs ID et guid? Avez-vous omis les 4 autres éléments? – erisco

+0

@Scott B: aussi simple que '$ excludeImages [0] -> guid'? – ajreal

+0

@erisco: var_dump renvoie tout le contenu de $ excludeImages. Il y a 5 éléments dans le tableau. Je viens d'inclure le contenu du premier élément pour plus de simplicité/lisibilité. –

Répondre

0

il suffit d'utiliser basename

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

EDIT: Comme commentateur mentionné ci-dessus, je pense que vous pourriez avoir besoin notation fléchée à la place de l'indexation pour "guid" comme dans $ excludeImages [0] [ "guid"]. Je n'ai pas remarqué initialement que c'est un objet. Il semble que vous ayez un tableau d'objets, pas un tableau structuré/imbriqué.

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

0

stdClass est essentiellement la classe par défaut pour PHP (et non la base!). Il n'a pas de méthode ou d'attribut, c'est une classe vide. Il est utilisé comme un conteneur. Vous pouvez créer une telle classe en convertissant un tableau en objet, par exemple. Votre var_dump signifie que le premier élément de votre tableau est un objet stdClass ayant un ID et des attributs guid. Par conséquent, ce code récupérerait la pleine guid:

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

Si vous voulez seulement récupérer le nom de fichier, vous pouvez utiliser basename():

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

Vous pouvez voir this question pour plus d'informations sur stdClass.

+0

Merci Vincent. C'est tout. –