| Re: [LA-technique] PHP ; Remplissage d'array avec foreach | 
[ Thread Index | Date Index | More linuxarverne.org/technique Archives ]
| 
  
  
    Bonjour Daniel, si je comprend bien tu souhaites travailler uniquement avec les tableaux traditionnels. premier point, vu que que la propriété "recipe" de l'objet du xml est un tableau dont les indices ne sont pas explicitement définis, tu peux essayer plus simplement : $mycookbook = array();
foreach($mycookfile->recipe as $value) {
	$mycookbook[] = (array) $value ;
}
// print_r($mycookbook);
tu obtiens un tableau d'objets "recipe" convertis en tableaux (via le transtypage (array)).
Attention cependant, les indices ingredient, recipetext, nutrition, comments restent de type SimpleXMLElement, il faudrait reboucler récursivement sur chaque indice de chaque élément recipe...
Le 2ième point est réglé dans la foulée :
print_r($mycookbook[0]['title']);
Pour le 3ième point, tu peux modifier la boucle initiale comme ceci :
$mycookbook = array();
$categories = array(); // tableau des catégories
foreach($mycookfile->recipe as $value) {
	$recipe = (array) $value; // recette actuelle
	$mycookbook[] = $recipe;  // ajout de la recette au tableau php
	// si pour la recette en cours, l'indice "category" existe :
	if(array_key_exists('category', $recipe)) {
		$categorie = $recipe['category'];
		// si la valeur catégorie ne figure pas dans le tableau des catégories :
		if(!in_array($categorie, $categories)) {
			array_push($categories, $categorie); // on ajoute cette nouvelle catégorie au tableau des catégories
		}
	}
}
print_r($mycookbook);
print_r(PHP_EOL . '--------------------' . PHP_EOL);
print_r($mycookbook[0]['title']);
print_r(PHP_EOL . '--------------------' . PHP_EOL);
print_r($categories);
bon courage : )
Fred.
    Le 05/01/2015 10:05, Daniel Cartron a
      écrit : 
    
  | 
| Mail converted by MHonArc 2.6.19+ | http://listengine.tuxfamily.org/ |