php-resource



Zurück   PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr > Entwicklung > PHP Developer Forum
 

Login

 
eingeloggt bleiben
star Jetzt registrieren   star Passwort vergessen
 

 

 


PHP Developer Forum Hier habt ihr die Möglichkeit, eure Skriptprobleme mit anderen Anwendern zu diskutieren. Seid so fair und beantwortet auch Fragen von anderen Anwendern. Dieses Forum ist sowohl für ANFÄNGER als auch für PHP-Profis! Fragen zu Laravel, YII oder anderen PHP-Frameworks.

Antwort
 
LinkBack Themen-Optionen Thema bewerten
  #1 (permalink)  
Alt 25-03-2008, 21:22
janein
 Member
Links : Onlinestatus : janein ist offline
Registriert seit: May 2003
Beiträge: 206
janein ist zur Zeit noch ein unbeschriebenes Blatt
Standard mehrdimensionales array einlesen - aber wie?

Ich möchte folgendes in ein mehrdimensionales array aus einer Datei einlesen:

a,b,c
x,y,z

folgender code zeit aber leider kein nur einen wert in $teilx:
[php]
$lines = file('/var/www/web22/log/news_1.txt');
$lines = array_values($lines);

foreach ($lines as $num => $wert) {
$teil = explode('|',$wert);

foreach ($teil as $teilx) {
echo $teilx." : <br>\n";
}
array($teilx);
}
var_export($teilx);[⁄php]

Wie bekomme ich alle Zeilen als Datei eingelesen, dass das array so aussieht?

array(
array(a,b,c),
array(x,y,z));
Mit Zitat antworten
  #2 (permalink)  
Alt 25-03-2008, 21:31
Kropff
  Administrator
Links : Onlinestatus : Kropff ist offline
Registriert seit: Mar 2002
Ort: Köln
Beiträge: 11.721
Kropff befindet sich auf einem aufstrebenden Ast
Standard

auf die schnelle.
PHP-Code:
// datei einlesen
$file file_get_contents('/var/www/web22/log/news_1.txt');
// anhand der zeilenumbrüche aufdröseln
$line explode ("\n"$file);
foreach (...
usw.) 
ggf. anstelle von "\n" ein "\r\n" oder trim setzen. und immer schön mit print_r arbeiten.

gruß
peter
__________________
Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
Meine Seite
Mit Zitat antworten
  #3 (permalink)  
Alt 25-03-2008, 21:42
janein
 Member
Links : Onlinestatus : janein ist offline
Registriert seit: May 2003
Beiträge: 206
janein ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
Original geschrieben von Kropff
auf die schnelle.
PHP-Code:
// datei einlesen
$file file_get_contents('/var/www/web22/log/news_1.txt');
// anhand der zeilenumbrüche aufdröseln
$line explode ("\n"$file);
foreach (...
usw.) 
ggf. anstelle von "\n" ein "\r\n" oder trim setzen. und immer schön mit print_r arbeiten.

gruß
peter
Ja, ok. Danke. Die Zeilen bekomme ich auch eingelesen. Die Herausforderung ist aber gleichzeitig noch die Zeilen anhand des Trennzeichnes ',' in ein weiteres array aufzuspitten, also array im array zu erstellen. Und das macht Probleme, immernoch.
Mit Zitat antworten
  #4 (permalink)  
Alt 25-03-2008, 21:44
Griecherus
 PHP Senior
Links : Onlinestatus : Griecherus ist offline
Registriert seit: May 2005
Ort: Berlin
Beiträge: 1.036
Griecherus ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Ich verstehe nur Bahnhof. Vielleicht liegts daran, dass ich mir gerade den Wanst vollgehauen habe
Aber mal im Ernst: Was bezweckst du? Wie sehen die Daten unverarbeitet aus und wie genau soll das Ergebnis aussehen?
Mit Zitat antworten
  #5 (permalink)  
Alt 25-03-2008, 21:47
Kropff
  Administrator
Links : Onlinestatus : Kropff ist offline
Registriert seit: Mar 2002
Ort: Köln
Beiträge: 11.721
Kropff befindet sich auf einem aufstrebenden Ast
Standard

wo ist das problem? erst die zeilen anhand des umbruchs aufdröseln. und dann in einer weiteren schleife anhand des | aufdröseln und das dann in noch einer schleife verarbeiten.

gruß
peter
__________________
Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
Meine Seite
Mit Zitat antworten
  #6 (permalink)  
Alt 25-03-2008, 21:48
janein
 Member
Links : Onlinestatus : janein ist offline
Registriert seit: May 2003
Beiträge: 206
janein ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
Original geschrieben von Griecherus
Ich verstehe nur Bahnhof. Vielleicht liegts daran, dass ich mir gerade den Wanst vollgehauen habe
Aber mal im Ernst: Was bezweckst du? Wie sehen die Daten unverarbeitet aus und wie genau soll das Ergebnis aussehen?
unverarbeitet:
a,b,c
x,y,z


Ergebniss:
array(
array(a,b,c),
array(x,y,z));

Ziel:
Es soll die unterschiedlichen Inhalte also a,b,c mit x,y,z verglichen werden und be Übereinstimmung ein Eintrag gelöscht werden. Hab da wohl ne Denkblockade ...
Mit Zitat antworten
  #7 (permalink)  
Alt 25-03-2008, 21:51
Griecherus
 PHP Senior
Links : Onlinestatus : Griecherus ist offline
Registriert seit: May 2005
Ort: Berlin
Beiträge: 1.036
Griecherus ist zur Zeit noch ein unbeschriebenes Blatt
Standard

PHP-Code:
$result = array();

foreach (
explode("\n"$lines) as $line)
{
    
$result[] = explode(','$line);
}

echo 
'<pre>';
print_r($result);
echo
'</pre>'
Mit Zitat antworten
  #8 (permalink)  
Alt 25-03-2008, 22:06
janein
 Member
Links : Onlinestatus : janein ist offline
Registriert seit: May 2003
Beiträge: 206
janein ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
Original geschrieben von Griecherus
PHP-Code:
$result = array();

foreach (
explode("\n"$lines) as $line)
{
    
$result[] = explode(','$line);
}

echo 
'<pre>';
print_r($result);
echo
'</pre>'
Aha, so einfach. Danke. Hast du noch einen Tipp wie ich nur einzelne gleiche Einträge vergleichen und falls gleich diese lösche?

a,b,c
x,z,z

Wenn also z.B. a und z denselben Inhalt haben. Wie lösche ich dann ein von zwei array in welchem ein gleicher Inhalt auftaucht?
Mit Zitat antworten
  #9 (permalink)  
Alt 25-03-2008, 22:46
Griecherus
 PHP Senior
Links : Onlinestatus : Griecherus ist offline
Registriert seit: May 2005
Ort: Berlin
Beiträge: 1.036
Griecherus ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
Original geschrieben von janein

a,b,c
x,z,z

Wenn also z.B. a und z denselben Inhalt haben. Wie lösche ich dann ein von zwei array in welchem ein gleicher Inhalt auftaucht?
Mithilfe von array_intersect(). Die Funktion liefert die Schnittmenge der an sie übergebenen Arrays, also genau das, was du suchst. Das Löschen musst du dann noch vornehmen. Es gibt nicht für alles ne Funktion

Geändert von Griecherus (25-03-2008 um 22:51 Uhr)
Mit Zitat antworten
  #10 (permalink)  
Alt 25-03-2008, 23:42
janein
 Member
Links : Onlinestatus : janein ist offline
Registriert seit: May 2003
Beiträge: 206
janein ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
Original geschrieben von Griecherus
Mithilfe von array_intersect(). Die Funktion liefert die Schnittmenge der an sie übergebenen Arrays, also genau das, was du suchst. Das Löschen musst du dann noch vornehmen. Es gibt nicht für alles ne Funktion
Leider ist das nicht genau was ich suche, da ich nur bestimmte Werte des array überprüfen will. Die Arrayinhalte können also unterschiedlich sein.
Mit Zitat antworten
  #11 (permalink)  
Alt 25-03-2008, 23:46
Griecherus
 PHP Senior
Links : Onlinestatus : Griecherus ist offline
Registriert seit: May 2005
Ort: Berlin
Beiträge: 1.036
Griecherus ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
Original geschrieben von janein
Leider ist das nicht genau was ich suche, da ich nur bestimmte Werte des array überprüfen will. Die Arrayinhalte können also unterschiedlich sein.
Ohne konkretes Beispiel oder noch besser eine Anforderungsdefinition (was genau bezweckst du) kann ich dich jetzt nur verdutzt angucken
Eins kann ich dir mit relativer Wahrscheinlichkeit aber schon sagen: Wenn es nicht genau das ist, was du suchst, dann wird es ein Teil der Lösung sein, das du für dein Vorhaben brauchst. Wie gesagt: Für alles gibt es keine vorgefertigten Funktionen.
Mit Zitat antworten
  #12 (permalink)  
Alt 26-03-2008, 00:08
janein
 Member
Links : Onlinestatus : janein ist offline
Registriert seit: May 2003
Beiträge: 206
janein ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
Original geschrieben von Griecherus
Ohne konkretes Beispiel oder noch besser eine Anforderungsdefinition (was genau bezweckst du) kann ich dich jetzt nur verdutzt angucken
Eins kann ich dir mit relativer Wahrscheinlichkeit aber schon sagen: Wenn es nicht genau das ist, was du suchst, dann wird es ein Teil der Lösung sein, das du für dein Vorhaben brauchst. Wie gesagt: Für alles gibt es keine vorgefertigten Funktionen.
Noch einmal:
Position(1,2,3)
a,b,c
a,y,z


stammen eingelesen aus einer Datei. Nun sollen nur eine Version des eingelesenen arrays später ausgegeben werden die an Position "1" gleich sind. a,b,c oder a,y,z soll also ausgegeben werden weil "a" der gleiche Wert ist wie in einer andere Zeile "a".

Geändert von janein (26-03-2008 um 00:14 Uhr)
Mit Zitat antworten
  #13 (permalink)  
Alt 26-03-2008, 00:15
Griecherus
 PHP Senior
Links : Onlinestatus : Griecherus ist offline
Registriert seit: May 2005
Ort: Berlin
Beiträge: 1.036
Griecherus ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
Original geschrieben von janein
Noch einmal:
Position(1,2,3)
a,b,c
a,y,z

stammen eingelesen aus einer Datei. Nun soll sollen nur die Teile des eingelesenen arrays später ausgegeben werden die an Position "1" nicht gleich sind.
Jetzt werden se mal nicht papig

Und wo genau ist das Problem? Wo die eigenen Ansätze? Zeig mal einen eigenen Versuch oder wenigstens Ideen, die man weiterführen könnte.
Du suchst übrigens nach der Position 0, nicht 1.
Mit Zitat antworten
  #14 (permalink)  
Alt 26-03-2008, 00:21
janein
 Member
Links : Onlinestatus : janein ist offline
Registriert seit: May 2003
Beiträge: 206
janein ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
Original geschrieben von Griecherus
Jetzt werden se mal nicht papig

Und wo genau ist das Problem? Wo die eigenen Ansätze? Zeig mal einen eigenen Versuch oder wenigstens Ideen, die man weiterführen könnte.
Du suchst übrigens nach der Position 0, nicht 1.
$lines1 = file_get_contents('/var/www/web22/log/new1.txt');
$lines2 = file_get_contents('/var/www/web22/log/new2.txt');
#$result = array_values($lines);
$i = 0;
#$lines = array();
foreach (explode("\n", $lines1) as $line1)
{
$result1[] = explode('|', $line1);
$i++;
}

foreach (explode("\n", $lines2) as $line2)
{
$result2[] = explode('|', $line2);
}

echo '<pre>';
#print_r($result);
echo'</pre>';

#$result1 = array('a','b','c');
#$result2 = array('x','y','a');
$result = array_merge($result1, $result2);
echo '<pre>';
print_r($result[$i][0]);
echo'</pre>';

echo $result[1][0];

Ich habe probiert mit $result[$i][0] auf die Position zuzugreifen, es klappt aber nicht. Mir fehlt da der logische ansatz bzw. ich auf die Positionen zugreifen kann, um diese zu vergleichen.
Mit Zitat antworten
  #15 (permalink)  
Alt 26-03-2008, 00:22
Griecherus
 PHP Senior
Links : Onlinestatus : Griecherus ist offline
Registriert seit: May 2005
Ort: Berlin
Beiträge: 1.036
Griecherus ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Sind die Indizies der Arrays denn numerisch? Falls ja, dann ist array_intersect nämlich durchaus das, was du suchst. Du musst nur zusätzlich überprüfen, ob die Indizes der Übereinstimmungen (im Rückgabewert enthalten) gleich 0 sind.

EDIT:
Gut, ganz so simpel ist es nicht. Siehe nächstes Posting.


Geändert von Griecherus (26-03-2008 um 00:34 Uhr)
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre 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


PHP News

ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlicht
ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlichtDie bekannte Marktplatzsoftware ebiz-trader ist in der Version 7.5.0 veröffentlicht worden.

28.05.2018 | Berni

Wissensbestand in Unternehmen
Wissensbestand in UnternehmenLebenslanges Lernen und Weiterbilden sichert Wissensbestand in Unternehmen

25.05.2018 | Berni


 

Aktuelle PHP Scripte

PHP Server Monitor

PHP Server Monitor ist ein Skript, das prüft, ob Ihre Websites und Server betriebsbereit sind.

11.09.2018 Berni | Kategorie: PHP/ Security
PHP WEB STATISTIK ansehen PHP WEB STATISTIK

Die PHP Web Statistik bietet Ihnen ein einfach zu konfigurierendes Script zur Aufzeichnung und grafischen und textuellen Auswertung der Besuchern Ihrer Webseite. Folgende zeitlichen Module sind verfügbar: Jahr, Monat, Tag, Wochentag, Stunde Folgende son

28.08.2018 phpwebstat | Kategorie: PHP/ Counter
Affilinator - Affilinet XML Produktlisten Skript

Die Affilinator Affilinet XML Edition ist ein vollautomatisches Skript zum einlesen und darstellen der Affili.net (Partnerprogramm Netzwerk) Produktlisten und Produktdaten. Im Grunde gibt der Webmaster seine Affilinet PartnerID ein und hat dann unmittelb

27.08.2018 freefrank@ | Kategorie: PHP/ Partnerprogramme
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 10:51 Uhr.