PHP|Débutant :: Forums

Advertisement

Besoin d'aide ? N'hésitez pas, mais respectez les règles

Vous n'êtes pas identifié(e).

#1 Forum Général PHP » controle d'une boucle foreach » 11-11-2009 15:01:22

manuso
Réponses : 2

Bonjour,

Sachant qu'une boucle foreach lit tous les eléments d'un tableau est-il possible d'éviter l'affichage du premier
élément de ce tableau pour les 2 boucles foreach, ici le premier élément de $category et $attributes ?

Dans un premier temps, j'ai assayé array_slice mais j'obtiens un warning
Warning: array_slice() expects parameter 1 to be array,

foreach (array_slice($attributes, 1) as $attribute) {
...
foreach (array_slice($values, 1) as $value) {

$category = $document->categories->category;
$attributes = $category->attributes->attribute;

foreach ($attributes as $attribute) {
echo "<div id=total_matches_container><div id=total_matches><div id=total_num_of_matches>{$attribute->name}\n</div>";
$values = $attribute->attributeValues->attributeValue;
foreach ($values as $value)
{
printf("<span class='result_list'><a href=?attributeValue=%s&categories=".$_GET['categories']."&k=".$_GET['k']."> %-16s</a></span><br /> \n", $value["id"], $value->name);
}
echo "</div></div>";
}
echo "</div>";

Auriez-vous un autre idée qui permette cela ,

merci manuso

#2 Forum Général PHP » boucle sur un fichier xml » 10-11-2009 21:22:49

manuso
Réponses : 1

bonsoir,

Je n'arrive pas à comprendre pourquoi mon parsing n'est pas complet sur un flux xml.

Pour essayé d'être simple, il y a 5 titres puis sous chaque titre, 5 produits sauf sous le premier titre ou il y une échelle de
prix, mon code parse bien les 5 titre premiere boucle 1) mais répète l'echelle de prix sous tous les autres titres alors qu'il
devrait y avoir 5 produits. Donc cette 2ième boucle est mal écrite piusqu'elle affiche:

*Find by Price Range               
Below $490                 
$490 - $770                 
$770 - $1170                 
$1170 - $1610                 
Above $1610                 

// ici répétition anormal de la fourchette de prix
*Find by Brand                 
Below $490             
$490 - $770                 
$770 - $1170                 
$1170 - $1610                 
Above $1610                 
etc ....

Au lieu de cela

*Find by Price Range
Below $490                 
$490 - $770                 
$770 - $1170                     
$1170 - $1610                 
Above $1610                 

*Find by Brand
ASUS
eMachines
Cybertron
Hewlett Packard
Acer
etc   .....

$category = $parser->document->categories[0]->category[0]; //ok
$match_count = $category->items[0]->tagAttrs['matcheditemcount']; //ok
$attributes = $category->attributes[0]->attribute[0];
// nombre de resltats ok
echo "<div id='total_num_of_matches_container'><div id='total_num_of_matches'>You found $match_count matches.\n</div>"; //ok
 
1//
foreach($parser->document->categories[0]->category[0]->attributes[0]->attribute as $attributes)
{
echo "<div id=total_matches_container><div id=total_matches><div id=total_num_of_matches> ".$attributes->name[0]->tagData;"</div>";
 
2//
foreach ($parser->document->categories[0]->category[0]->attributes[0]->attribute[0]->attributevalues[0]->attributevalue as $attributevalues){
echo "<div class='offertitle'>".$attributevalues->name[0]->tagData."</a></div>";
}
}

J'ai mis un exemple complet ici pour mieux comprendre
fichier de démo ici: http://www.listepro.com/test/Televiseur … 6252,1.htm

Le fichier tel qu'il devrait s'afficher en tout en haut de la page.
http://techreviewsource.com/shoppingcom … k=Desktops

Le fichier parsé,  je précise cette partie du parsing qui pose problème est en bas du fichier xml.
http://sandbox.api.shopping.com/publish … thValues=5


Merci si vous avez une idée pour écrire ou imbriquée  cette 2ieme boucle

manuso

Pied de page des forums

Propulsé par FluxBB