Array in txt schreiben

stikmata

Grünschnabel
Hallo ich versuche ein Array in eine Textdatei zu schreiben in dem ich

PHP:
<?php
        $produkte[0][0]= "Anrede";
	$produkte[0][1]= "Name";
	$produkte[0][2]= "Vorname";

        $produkte[1][0]= $_SESSION['anrede'];
	$produkte[1][1]= $_SESSION['name'];
	$produkte[1][2]= $_SESSION['vorname'];

        $fp = fopen('kunden.txt', 'w');

	foreach($produkte as $fields) {
		fputs($fp, $fields.';');
	}
	fclose($fp);


schreibe.

Aber wenn ich dann die datei anschaue steht nur.

Array;Array;

Drin.

Was muss ich machen damit der geasmt inhalt darin steht?
 
Hi,

mit dem foreach läufst du alle Elemente aus $produkte durch. Diese sind allerdings auch wieder Arrays. Somit musst diese auch wieder durchlaufen, dann bist du bei den Feldern herunten.

Kannst ja mal testweise folgendes in deine Textdatei schreiben lassen:
PHP:
foreach($produkte as $fields) {
        fputs($fp, var_export($fields, true).'\n\n============\n\n');
    }

Grüße,
BK
 
Du hast ein Mehrdimensionales Array, also musst du auch die anderen Ebenen durchgehen.

$produkte[0] // -> 1. Ebene
$produkte[0][0] // 2. Ebene
 
Hallo. :)

Vielleicht irre ich mich ja auch.

Aber ich schreibe Arrays so in eine TXT-Datei:
PHP:
$array2txt = implode("\n", $array)."\n";
 
Tja, Alice. In diesem Fall irrst du dich. Der Grund dafür haben deine Vorposter bereits geliefert.
 
Ich würde den ganzen Code etwas umbauen und es mit einem Eindimensionalen Array machen.

Wenn es jetzt nur um Kundeninformationen geht, reicht das ja auch vollkommen aus.

Edit:

Absolut ungetestet. :D (Soll nur als "Ansatz" oder "Idee" dienen)

PHP:
   $produkte[] = 'Anrede: '.$_SESSION['anrede'];
   $produkte[] = 'Name: '.$_SESSION['name'];
   $produkte[] = 'Vorname: '.$_SESSION['vorname'];

   $fp = fopen('kunden.txt', 'w');
         fwrite($fp, implode ("\n", $produkte))."\n";
         fclose($fp);
 
Zuletzt bearbeitet:
Ok ich habe das nun hinbekommen habe nun aber das problem das ich die datei in einem programm einlesen möchte und dieses nur ANSI Codierte dateien unterstützt.

meine txt datei ist auf dem server eine ANSI Datei und wenn sie per mail versand wird ist es dann eine UTF-8 Codierte Datei.
Wie kann ich die umcodieren also automatisch
 
PHP:
 $fp = fopen('kunden.txt', 'w');
	
	foreach ($produkte as $fields) {
	$produkte[] = mb_convert_encoding($produkte, 'utf8');
	fputcsv($fp, $fields, ';');
	}
	fclose($fp);

mein Problem ist es nun aber wie gesagt warschein lich den bom zu entfernen aber ich das leider gerade noch nicht hin. Habe es mit

PHP:
function rmBOM($string) { 
    if(substr($string, 0,3) == pack("CCC",0xef,0xbb,0xbf)) { 
        $string=substr($string, 3); 
    } 
    return $string; 
	}
//
$string = file_get_contents('kunden.txt');
	$string = rmBOM($string);
	file_put_contents('kunden.txt', $string);
versucht aber ich weis nicht an welcher stelle ich das entfernen des bom´s platzieren muss erst wenn die datei komplett erstellt wurde denke ich und so habe ich es auch schon versucht.
 
Wenn du es einfach haben willst, kannst du natürlich auch serialize() benutzen, um aus dem Array einen String zu erstellen, den du einfach in eine Text-Datei pumpst. Beim Einlesen verwendest du dann logischerweise unserialize() um aus dem String wieder ein Array zu machen.

Das Ganze bringt dir allerdings nur was, wenn dich nicht interessiert, wie es in der Text-Datei steht.
 
Zurück