NIKESLB 0 Denunciar post Postado Maio 19, 2010 Olá =) Tenho uma dúvida em relação aos arrays (outra vez :huh: ) Vejo muita na net, como guardar em array os dados de um ficheiro txt (texto), mas eu queria fazer o contrário, guardar o array da minha página num txt. O que tento fazer é o utilizador ao abrir a página, o ficheiro txt é baixado com as informações do array. $fruits = array ( "fruits" => array("a" => "orange", "b" => "banana", "c" => "apple") ); $test = array ( "test" => array("a" => "1", "b" => "2", "c" => "3") ); Ou seja no ficheiro txt queria algo desse formato: "orange","1" Aqui está a página script onde eu fiz as funções que permitem o download do ficheiro, e escrever no ficheiro txt: <?php function ficheiro($nome, $conteudo) { $abrir = fopen ('download/'.$nome.' ','w');//abra o ficheiro fwrite($abrir, $conteudo);//escreve o "conteudo" no ficheiro fclose ($abrir);// fecha } function download($nome) { $caminho = 'download/' . $nome;//caminho da pasta if (file_exists($caminho))//se o ficheiro existe { //cabecalho que irá ser enviado para o download header('Content-disposition: attachment; filename="' . $nome . '"'); header('Content-Type: application/force-download'); header('Content-Transfer-Encoding: binary'); header('Content-Length: '. filesize($caminho)); header('Pragma: no-cache'); header('Cache-Control: must-revalidate, post-check=0, pre-check=0'); header('Expires: 0'); readfile($caminho); } else { $erroFicheiro = 'O ficheiro "' .$nome . '" não existe.';//senão erro } } ?> e a página txt.php: <?php require_once ('scripts.php'); $fruits = array ( "fruits" => array("a" => "orange", "b" => "banana", "c" => "apple") ); $test = array ( "test" => array("a" => "1", "b" => "2", "c" => "3") ); $nome = 'test.txt';//nome do ficheiro que irá ser criado $conteudo = "??????"; ficheiro($nome, $conteudo); //chama a função ficheiro, enviado as variaveis nome e conteudo. download($nome);//chama a funcao download enviando a variavel nome. ?> Como podem ver, a partir da variável conteudo fiquei bloqueado, tentei várias coisas converti em uma string usei implode ou explode mas o ficheiro txt veio assim : <br /> <b>Notice</b>: Array to string conversion in <b>C:\wamp\www\PHP test\txt.php</b> on line <b>9</b><br /> <br /> <b>Warning</b>: fwrite() expects parameter 2 to be string, array given in <b>C:\wamp\www\PHP test\scripts.php</b> on line <b>6</b><br /> Depois de várias tentativas já ando um pouco perdido, alguém me pode ajudar por favor Compartilhar este post Link para o post Compartilhar em outros sites
André D. Molin 15 Denunciar post Postado Maio 19, 2010 Um array não pode ser convertido para uma string. Tente fazer isso utilizando serialize() ou então itere esse array e desmembre ele para poder gravar no txt. Compartilhar este post Link para o post Compartilhar em outros sites
NIKESLB 0 Denunciar post Postado Maio 20, 2010 woow muito bom, há funções para tudo, já alterei um pouco mais o meu cod e já deu para gravar num ficheiro txt =D Mas o problema agora é a formatação dos dados no ficheiro txt que ficou assim: a:1:{s:6:"fruits";a:3:{s:1:"a";s:6:"orange";s:1:"b";s:6:"banana";s:1:"c";s:5:"apple";}} Será que há uma maneira para dar este resultado no txt: "orange","banana","apple" ... e assim sucessivamente para as restantes linhas? Compartilhar este post Link para o post Compartilhar em outros sites
André D. Molin 15 Denunciar post Postado Maio 20, 2010 Você realmente precisa dessa formatação ou é apenas uma questão de "estética"? Em relação ao seu primeiro post do tópico, veja: <?php $fruits = array( 'fruits' => array( 'orange', 'banana', 'apple' ) ); $test = array( 'test' => array( '1', '2', '3' ) ); $comb = array(); $size = max( count( $fruits['fruits'] ), count( $test['test'] ) ); for( $i = 0; $i < $size; ++$i ) { if ( empty( $fruits['fruits'][$i] ) || empty( $test['test'][$i] ) ) break; $comb[] = $fruits['fruits'][$i]; $comb[] = $test['test'][$i]; } echo implode( ',', $comb ); ?> Compartilhar este post Link para o post Compartilhar em outros sites
NIKESLB 0 Denunciar post Postado Maio 21, 2010 estética, pelo menos só com um array para eu ver e testar a formatação no txt Compartilhar este post Link para o post Compartilhar em outros sites