Fusion de 2 tableaux

Eléphant du PHP | 331 Messages

17 sept. 2009, 15:17

Bonjour,

Je voudrais fusionner 2 tableaux issus chacun de la récupération d'un flux xml.

Je fais ceci :
				$tableau = array();
				
				$curl = curl_init();
				curl_setopt($curl,CURLOPT_URL,"http://twitter.com/statuses/user_timeline.xml?screen_name=airball");
				curl_setopt($curl,CURLOPT_RETURNTRANSFER, true);
				$contenu = curl_exec($curl);
				$xml = new simpleXMLElement($contenu);
				
				$curl2 = curl_init();
				curl_setopt($curl2,CURLOPT_URL,"http://twitter.com/statuses/user_timeline.xml?screen_name=aurebond");
				curl_setopt($curl2,CURLOPT_RETURNTRANSFER, true);
				$contenu2 = curl_exec($curl2);
				$xml2 = new simpleXMLElement($contenu2);
				
				$tableau = array_merge($xml,$xml2);
Mais j'obtiens l'erreur suivante :
Warning: array_merge() [function.array-merge]: Argument #1 is not an array in /homepages/26/d297337207/htdocs/epreuves.php on line 139

Warning: array_merge() [function.array-merge]: Argument #2 is not an array in /homepages/26/d297337207/htdocs/epreuves.php on line 139
Pouvez-vous m'aider ?

merci d'avance !

Mammouth du PHP | 2937 Messages

17 sept. 2009, 15:22

Ces deux avertissements sont d'autant plus normaux que les variables $xml et $xml2 correspondent à des objets, et non à des tableaux.

En cas de doute,
var_dump ($xml);
var_dump ($xml2);
Cela dit, tu peux forcer le type des deux variables comme suit :
$tableau = array_merge ((array) $xml, (array) $xml2);
mais, je ne te garantis pas que tu obtiennes deux tableaux remplis. :-k

Eléphant du PHP | 331 Messages

17 sept. 2009, 15:40

Merci pour cette réponse.

Effectivement, ce ne sont pas des tableaux que je cherchais à fusionner.
Cependant, je ne sais pas comment comment fusionner ces flux xml que je récupère.
Je pensais les fusionner dans un tableau, pour les trier avant de ressortir leur données ensuite.

Pouvez-vous m'aider ?

Merci

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

17 sept. 2009, 17:43

Et a défaut de les fusionner, puisqu'il s'agit juste de deux chaines xml, pourquoi ne pas simplement les concaténer ?

Si tu retires la dernière balise du premier flux, ainsi que l'entête et la première balise du second flux, tu peux concaténer les deux ensemble pour n'avoir qu'un seul xml que tu pourras ensuite parser :)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Eléphant du PHP | 331 Messages

18 sept. 2009, 12:21

Merci Ryle pour ta réponse.

Peux-tu être plus précis que ce que doit supprimer et conserver, j'ai du mal à capter.
Par contre, le concaténer c'est bien, mais ça va m'être ensuite difficile de trier à l'intérieur de mon flux xml selon la balise <created_at>.
Je ne sais pas du tout comment m'y prendre ! 8-|

Merci !

Mammouth du PHP | 2937 Messages

18 sept. 2009, 12:24

Pour trier dans du XML, même contenu dans une chaîne de caractères, il n'y a pas plus simple que SimpleXML. ;)

Eléphant du PHP | 331 Messages

18 sept. 2009, 17:13

donc si je comprends bien je concatène d'abord mes flux et je les trie ensuite avec SimpelXML ?

Pouvez-vous me mettre sur les rails pour concaténer mes flux, je ne sais pas comment m'y prendre.

Merci !

ViPHP
ViPHP | 1136 Messages

18 sept. 2009, 19:48

Ma pierre à l'édifice ,

Peut être avec simpleXML::asXML :
http://fr2.php.net/manual/fr/function.s ... -asXML.php

Ca doit le faire ... :D

Ch .

Eléphant du PHP | 331 Messages

20 sept. 2009, 09:59

Pourriez-vous me donner un exemple concret (avec mon cas de préférence) pour concaténer d'une part (suite aux curl de mes flux xml), puis ensuite de les trier selon une des balises des flux (<created_at>) ?

Merci encore !