Jump to content

Ganhe $$$ escrevendo tutoriais para nós!


Foto

PHP + XML + Array





  • Faça login para responder
1 resposta(s) nesse tópico

#1 gust4vo

gust4vo
  • Participante
  • 14 mensagens

Publicado 18 November 2009 - 07:27 PM

Opa.. bom vou ficar um tepo encomodando vocês hehe...
1º Seguinte eu estou fazendo um trabalho com um XML do Twitter (http://twitter.com/s...ome_usuario.xml) e em resumo, este XML tem uma estrutura mais ou menos assim (simplifiquei a estrutra para deixar mais claro o que quero):

<statuses type="array">
	<status>
		<created_at>Tue Nov 17 23:01:41 +0000 2009</created_at>
		<text>
			E aew @fulano? Como estas?
		</text>
		<user>
			<id>17809537</id>
			<name>Beltrano Junior</name>
			<screen_name>beltranoJr</screen_name>
		</user>

	</status>
	<status>
		<created_at>Tue Dec 02 15:29:19 +0000 2008</created_at>
		<text>
			Opa.. sainda da aula..
		</text>
		<user>
			<id>17809537</id>
			<name>Beltrano Junior</name>
			<screen_name>beltranoJr</screen_name>
		</user>

	</status>

</statuses>

O que eu preciso é o seguinte... eu tenho 2 usuários e quero colocar todas os tweets (postagens do Twitter <text>) destes em uma Array ordenados por data <created_at> e depois disto imprimir esta Array.

2º Vocês estão vendo o @fulano ??? Eu queria que no momento que fosse impresso este Array o @fulano (e todos os que tiverem "@" que é a forma de replicar usuários no Twitter) se tornasse clicável e entrasse no Twitter dele <http://www.twitter.com/fulano>.

E aew.. quem é o 1º a se botah?
--------------------------------
gust4vo ZimmermanN
Planejar o fracasso, é nunca fracassar!




#2 gust4vo

gust4vo
  • Participante
  • 14 mensagens

Publicado 23 November 2009 - 11:59 PM

Bom.. dando um feedback para quem cruzar por aqui.. eu consegui unir os 2 XMLs em um Array da seguinte maneira:

<?php
	$XML_a = simplexml_load_file('http://twitter.com/statuses/user_timeline/usuarioA.xml'); //carrego o XML do usuário usuarioA
	$XML_b = simplexml_load_file('http://twitter.com/statuses/user_timeline/usuarioB.xml');//carrego o XML do usuário usuarioB
	$tweets = array();	
	$maxA = 0;
	$maxB = 0;
	
	for($i = 0; $i < (count($XML_a->status )) + (count($XML_b->status)); $i++) { //somo o número total de "status" nos 2 XMLs e somo eles para fazer o FOR					
		if( $maxA < count($XML_a->status) ){ //verifico se maxA é menor que o número total de "status" no $XML_a
			$tweets[$i]['user'] = $XML_a->status[$i]->user->id; //carrego o valor contido no nó para a posição "i" em "user" (array bidimensional)
			$tweets[$i]['created_at'] = $XML_a->status[$i]->created_at;	//carrego o valor contido no nó para a posição "i" em "created_at" (array bidimensional)					
			$maxA++;
		}else if( $maxB < count($XML_b->status) ){
			$tweets[$i]['user'] = $XML_b->status[$i - $maxA]->user->id; //$i - $maxA pq quero que ele recomece a armazenar desde o 1º no $XML_b
			$tweets[$i]['created_at'] = $XML_b->status[$i - $maxA]->created_at;						
			$maxB++;						
		}										
	}
	$quant = $maxA + $maxB; //somo o total de posições no array
	rsort ($tweets['created_at']); //ordena em ordem decrescente
	
	for($i = 0; $i < $quant; $i++) {
		echo '<b style="color: #FF0000;">';
			echo $tweets[$i]['user'];
		echo '</b> | ';
		echo $tweets[$i]['text'];
		echo '<br><b style="color: #008800;">';
			echo $tweets[$i]['created_at'];
		echo '</b>';
		echo '<br /><br />';
	}				
?>

Bom a problema agora é a parte do "rsort ($tweets['created_at'])"....
Ao invés dele ordenar por data ele esta ordenando todos os tweets do "usuarioA" em ordem decrescente por data e depois os do "usuarioB" em ordem decrescente e não mesclando os 2.... sacaram??

Como faço para ele ordenar tudo apenas pelo "created_at" (data)???
--------------------------------
gust4vo ZimmermanN
Planejar o fracasso, é nunca fracassar!






Tópicos Relacionados Collapse





Ganhe $$$ escrevendo tutoriais para nós!