php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger

PHP Einsteiger PHP Problemlösungen für Spracheinsteiger
Archive: 2004, 2004/2, 2005, 2005/2, 2006, 2007, 2008, 2009, 2010,

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 08.11.2011, 13:48  
Neuer Benutzer
 
Registriert seit: 15.09.2011
Beiträge: 16
PHP-Kenntnisse:
Anfänger
rumdiidumdii befindet sich auf einem aufstrebenden Ast
Standard implode Umsetzungsproblem

Huhu ich habe folgendes Problemchen:

Ich ho
PHP-Code:
//Holhe mir folgende Daten aus Datenbank
$spalte[] = $daten->lastname;
$spalte[] = $daten->firstname;
$spalte[] = $daten->build_1;
$spalte[] = $daten->build_2;
$spalte[] = $daten->dep_1;
$spalte[] = $daten->dep_2
Da ich diese Daten in einer csv Datei speichere habe ich folgendes for Konstrukt, jedoch bekam ich den tipp dieses mit der Funktion implode() zu realisieren.
PHP-Code:
for($j 0$j count($spalte); $j++)
{
// @TODO: schau dir mal die funktion implode an ... die macht wahrscheinlich das gleiche nur schöner und vermutlich schneller
    
$export .= "\"" $spalte[$j] . "\"";

    if(
$j != count($spalte)-1)
    {
        
$export .= ";";
    }

Jedoch habe ich keine Ahnung wie ich an die Sach rangehen soll.

mfg rumdii
rumdiidumdii ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 08.11.2011, 13:56  
Erfahrener Benutzer
 
Registriert seit: 01.09.2010
Beiträge: 4.561
PHP-Kenntnisse:
Fortgeschritten
eagle275 ist ein sehr geschätzer Menscheagle275 ist ein sehr geschätzer Menscheagle275 ist ein sehr geschätzer Mensch
Standard

hm .. ein Blick ins Manual verrät dir eigentlich allumfänglich, wie die Funktion benutzt wird, welche Parameter sie kennt und so weiter - und wenn dann noch Fragen bleiben, nimmst du dir dort die Userkommentare vor - von Leuten, die wohl genau wie du mal vor nem Problem mit der Funktion standen ...

http://de3.php.net/manual/en/function.implode.php

Lange Rede kurzer Sinn, implode schreibt die Elemente eines Arrays (2ter Parameter) in einen String - getrennt durch Trennzeichen (1ter Parameter) . also brauchst du keine Schleife mehr, sondern nur noch einen implode-Funktionsaufruf.
__________________
"Irren ist männlich", sprach der Igel und stieg von der Drahtbürste
eagle275 ist offline   Mit Zitat antworten
Alt 08.11.2011, 14:07  
Neuer Benutzer
 
Registriert seit: 15.09.2011
Beiträge: 16
PHP-Kenntnisse:
Anfänger
rumdiidumdii befindet sich auf einem aufstrebenden Ast
Standard

Im Prinzip ist mir der Aufruf der Funktion klar

Jedoch funktioniert folgendes einfach nicht:
PHP-Code:
    $semi_separated implode(";"$spalte);

    
fwrite($file$semi_separated); 
Er gibt nur irgendwelche anscheinden wirr umeinander gewirbelten werte aus! mit echo funktioniert es wenigstens halbwegs! :P
rumdiidumdii ist offline   Mit Zitat antworten
Alt 08.11.2011, 14:21  
Erfahrener Benutzer
 
Benutzerbild von lstegelitz
 
Registriert seit: 07.09.2009
Beiträge: 4.005
PHP-Kenntnisse:
Fortgeschritten
lstegelitz ist einfach richtig nettlstegelitz ist einfach richtig nettlstegelitz ist einfach richtig nettlstegelitz ist einfach richtig nett
Standard

Zitat:
Zitat von rumdiidumdii Beitrag anzeigen
Er gibt nur irgendwelche anscheinden wirr umeinander gewirbelten werte aus!
Und was soll das heissen?
__________________
Über 90% aller Gewaltverbrechen passieren innerhalb von 24 Stunden nach dem Konsum von Brot.
lstegelitz ist offline   Mit Zitat antworten
Alt 08.11.2011, 14:32  
Neuer Benutzer
 
Registriert seit: 15.09.2011
Beiträge: 16
PHP-Kenntnisse:
Anfänger
rumdiidumdii befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von lstegelitz Beitrag anzeigen
Und was soll das heissen?
Das es nicht funktioniert!


Sollte die Funktion fputcsv() nicht genau das für mich machen was ich will?
rumdiidumdii ist offline   Mit Zitat antworten
Alt 08.11.2011, 14:38  
Erfahrener Benutzer
 
Benutzerbild von Arne Drews
 
Registriert seit: 22.04.2009
Beiträge: 3.486
PHP-Kenntnisse:
Anfänger
Arne Drews wird schon bald berühmt werdenArne Drews wird schon bald berühmt werden
Arne Drews eine Nachricht über Skype™ schicken
Standard

Wenn
PHP-Code:
echo implode';'$spalte ); 
nicht das ausgibt, was Du erwartest, wird der Fehler nicht durch fputcsv behoben!

Beitrag editiert:
Zitat:
mit echo funktioniert es wenigstens halbwegs!
also kommt auch dort nicht das raus, was Du erwartest?!
Vielleicht zeigst Du uns mal, was "wirres" dabei rauskommt...
__________________
Phantasie ist wichtiger als Wissen, denn Wissen ist begrenzt.
Probleme kann man niemals mit derselben Denkweise lösen, durch die sie entstanden sind.
Albert Einstein
Arne Drews ist offline   Mit Zitat antworten
Alt 08.11.2011, 14:45  
Moderator
 
Registriert seit: 06.06.2008
Beiträge: 4.945
PHP-Kenntnisse:
Fortgeschritten
Wolla ist ein wunderbarer AnblickWolla ist ein wunderbarer AnblickWolla ist ein wunderbarer AnblickWolla ist ein wunderbarer AnblickWolla ist ein wunderbarer AnblickWolla ist ein wunderbarer AnblickWolla ist ein wunderbarer Anblick
Wolla eine Nachricht über ICQ schicken
Standard

Wenn deine Daten selbst das Trennzeichen enthalten, dann wird die Datei korrupt. Beispiel:
Hans
Das ist ein ; und das ist ein ,
Köln

wird zu
Hans;Das ist ein ; und das ist ein,;Köln
und somit nach dem Wiedereinlesen zu

Hans
Das ist ein
und das ist ein ,
Köln


Mit fputcsv packst du die Daten ein:
"Hans";"Das ist ein;und das ist ein,";"Köln"

Also vergiss die schlechte Lösung mit implode.


Abgesehen davon ist diese Zeile
for($j = 0; $j < count($spalte); $j++)
in zweierlei Hinsicht problematisch.

Zum einen wird die Anzahl der Elemente count() bei jedem Schleifendurchlauf neu berechnet, was unnötig ist.
Zum anderen nimmt man zum Durchlaufen von Arrays besser foreach(). Eine for-Schleife scheitert bei assoziativen Array.
__________________
Warum denkt mein Hund eigentlich immer dann, wenn es an der Tür klingelt, es sei für ihn?
Wolla ist offline   Mit Zitat antworten
Alt 08.11.2011, 14:46  
Erfahrener Benutzer
 
Benutzerbild von Arne Drews
 
Registriert seit: 22.04.2009
Beiträge: 3.486
PHP-Kenntnisse:
Anfänger
Arne Drews wird schon bald berühmt werdenArne Drews wird schon bald berühmt werden
Arne Drews eine Nachricht über Skype™ schicken
Standard

Zitat:
Zitat von Wolla
Wenn deine Daten selbst das Trennzeichen enthalten, dann wird die Datei korrupt.
..da hast Du natürlich wahr...
__________________
Phantasie ist wichtiger als Wissen, denn Wissen ist begrenzt.
Probleme kann man niemals mit derselben Denkweise lösen, durch die sie entstanden sind.
Albert Einstein
Arne Drews ist offline   Mit Zitat antworten
Alt 08.11.2011, 14:49  
Erfahrener Benutzer
 
Benutzerbild von tr0y
 
Registriert seit: 26.07.2010
Beiträge: 4.874
PHP-Kenntnisse:
Fortgeschritten
tr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblicktr0y ist ein wunderbarer Anblick
tr0y eine Nachricht über MSN schicken
Standard

@rumdiidumdii: Klar!

PHP-Code:
$testData = array(

    array(
'test','this','things','please','!',0),
    array(
'test','this','things','please','!',1),
    array(
'test','this','things','please','!',2),
    array(
'test','this','things','please','!',3),
    array(
'test','this','things','please','!',4)

);

$fileHandle fopen('php://temp','r+');

foreach ( 
$testData as $dataSet ) {
    
fputcsv($fileHandle$dataSet','chr(0));
}

rewind($fileHandle);

while ( !
feof($fileHandle) ) {
    echo 
fgets($fileHandle4096);
}

fclose($fileHandle); 
result:
Code:
test,this,things,please,!,0
test,this,things,please,!,1
test,this,things,please,!,2
test,this,things,please,!,3
test,this,things,please,!,4
Enclosure-less in CSV rumzuschreiben ist nur dann ratsam wenn man explizit numerische Daten hinterlegt und auch da ist vorsicht geboten welchen Delimiter man verwendet.
__________________
Lasse mir ohne Anwendung von Gewalt Dinge schenken, Amazon weiß darüber bald mehr.
tr0y ist gerade online   Mit Zitat antworten
Alt 08.11.2011, 14:53  
Neuer Benutzer
 
Registriert seit: 15.09.2011
Beiträge: 16
PHP-Kenntnisse:
Anfänger
rumdiidumdii befindet sich auf einem aufstrebenden Ast
Standard

Okai ich probiere das zu erklären
Sry bin leidergottes nich so der php Pro aber vielen Dank für eure Hilfe!

mit
PHP-Code:
echo implode';'$spalte ); 
funktioniert es soweit das er mir alle Daten ausgibt jedoch keinen richtigen Zeilenumbruch macht!
rumdiidumdii ist offline   Mit Zitat antworten
Antwort


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Titel auslesen - Warning: implode() G456676 PHP Einsteiger 56 29.08.2011 15:25
[Erledigt] array -&gt; implode, Zeichen voran-/ dahinterstellen befubo PHP Tipps 2010 8 12.02.2010 09:41
Array mit implode in String umwandeln franc PHP Tipps 2008 14 21.12.2008 18:05
Problem mit implode Das Devil PHP Tipps 2008 8 07.10.2007 10:46
implode und html tinchen PHP Tipps 2006 1 22.02.2006 21:08
implode Problem Mondschein PHP Tipps 2005 7 18.03.2005 14:06
Array, implode, in die DB und nun -> ausgabe? Paulo PHP Tipps 2004-2 4 29.11.2004 12:33
[Erledigt] Wo ist der Fehler bei implode? PHP Tipps 2004 4 22.10.2004 15:03
DB Ausgabe in eigenem Templatesystem realisieren Corvin PHP-Fortgeschrittene 25 06.09.2004 18:48

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
implode for schleife, php array in string wandeln implode(), php implode enclosure, implode php, $fehler=implode(

Alle Zeitangaben in WEZ +2. Es ist jetzt 16:22 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum