Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

NIKESLB

Guardar vários array num txt

Recommended Posts

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

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

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

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.