Antworten auf deine Fragen:
Neues Thema erstellen

Statt mehreren unbenannten eindimensionalen Arrays per explode assoziatives Array

SWFP

SWFP Mitglied

Hi,

ich habe eine Textdatenbank
Code:
Überschrift|Text
Überschrift 2|Text 2
...
und lasse mir per explode mehrere Arrays erstellen.
PHP:
$news_data = file("news.txt", FILE_SKIP_EMPTY_LINES);
krsort($news_data);

foreach($news_data as $news)
   {
   $news = stripslashes($news);
   $zerlegen = explode("|", $news);
...
Nun habe ich aber mehrere unbenannte eindimensionale Arrays. Diese kann ich dann aber nur in der foreach-Schleife benutzen, da ich sie ja ohne Namen sonst nicht aufrufen kann. Für eine Übersichtsseite weiter kein Problem.

Allerdings will ich auf einer anderen Seite nun ein einziges Element, also beispielsweise nur
Code:
Überschrift 3|Text 3
abrufen. Dafür käme mir dann ja ein einziges mehrdimensionales Array gelegen, über das alles angesprochen werden kann. Sehe ich das richtig? Und wenn ja: Wie realisiere ich das?

MfG
SWFP
 

Duddle

Posting-Frequenz: 14µHz

AW: Statt mehreren unbenannten eindimensionalen Arrays per explode assoziatives Array

Naja, statt die einzelnen Arrays pro Schleifendurchlauf in $zerlegen zu speichern und dann im nächsten gleich zu überschreiben, häng sie eben an dein neues, mehrdimensionales Array an.


Duddle
 

JPS

Nicht mehr ganz neu hier

AW: Statt mehreren unbenannten eindimensionalen Arrays per explode assoziatives Array

Gibt es einen Grund warum Du z.B nicht sowas wie SQLite nutzt?
 

SWFP

SWFP Mitglied

AW: Statt mehreren unbenannten eindimensionalen Arrays per explode assoziatives Array

joa, ich bin eben ein Liebhaber von Textdatenbanken, solange es geht :)

Danke, Duddle. Ich werds' mal ausprobieren.

EDIT: Wow, das hat dann aber einen Umbau nötig. Wie mache ich das nun am besten?
 
Zuletzt bearbeitet:

Duddle

Posting-Frequenz: 14µHz

AW: Statt mehreren unbenannten eindimensionalen Arrays per explode assoziatives Array

Woran scheiterst du?
Im kleinsten Fall musst du nur zwei zusätzliche Zeichen in deinem ursprünglichen Script hinzufügen, ansonsten eben die verlinkte Funktion nutzen.


Duddle
 

SWFP

SWFP Mitglied

AW: Statt mehreren unbenannten eindimensionalen Arrays per explode assoziatives Array

Ich weiß, dass ich
Code:
[]
oder
Code:
array_push()
nehmen muss, aber die Ausgaben sind falsch. Meistens ist das Array mehrdimensional, aber es wird immer noch immer ein extra Array erstellt.
 

fakerer

Aktives Mitglied

AW: Statt mehreren unbenannten eindimensionalen Arrays per explode assoziatives Array

würde das ganze auch über eine datenbank lösen,

aber wenn es schon in textform gespeichert werden solle stellt sich die frage warum nicht gleich als array speichern? Also einfach eine date die das Array zurückgibt.

mit [] oder array_push kannst du einfach nur ein element einem array am ende hinzufügen mit einem fortlaufenden key
 
Zuletzt bearbeitet:

SWFP

SWFP Mitglied

AW: Statt mehreren unbenannten eindimensionalen Arrays per explode assoziatives Array

Aber bei mehrdimensionalen Arrays gestaltet sich das wieder problematisch.
 

fakerer

Aktives Mitglied

AW: Statt mehreren unbenannten eindimensionalen Arrays per explode assoziatives Array

warum ´?
<?php
return array(
'1' => array(
'1' => 'inhalt ebene2'
'2' => 'inhalt ebene )
)

ist dann wenigstens übersichtlicher als in einer reinen Textdatei weil man gleich erkennt was zu welcher ebene gehört, finde ich zumindest?
oder wo meinst du das es da ein Problem gibt?
 

SWFP

SWFP Mitglied

AW: Statt mehreren unbenannten eindimensionalen Arrays per explode assoziatives Array

das nicht, aber das Hinzufügen bereitet mir Probleme.
 

Duddle

Posting-Frequenz: 14µHz

AW: Statt mehreren unbenannten eindimensionalen Arrays per explode assoziatives Array

Zeig deinen Code, die erwartete Ausgabe und die tatsächliche Ausgabe. Du beschreibst dein Problem dermassen schwammig, dass es unmöglich ist dir gezielt zu helfen.


Duddle
 

JPS

Nicht mehr ganz neu hier

AW: Statt mehreren unbenannten eindimensionalen Arrays per explode assoziatives Array

@SWFP - Ich dachte, da SQLite DBs ja auch nur in einer (Text???)-Datei abgelegt werden, käme Dir das entgegen - ist ja prinzipiel deine Lösung mit der charmanten Möglichkeit den SQL Befehlssatz zu nutzen und PHP bietet direkte Unterstützung.
 

SWFP

SWFP Mitglied

AW: Statt mehreren unbenannten eindimensionalen Arrays per explode assoziatives Array

@Duddle: Tut mir leid, es war schon spät und ich wollte mal eben noch schnell antworten. Einen Moment später wusste ich dann auch schon, was ich da vergessen hatte.
Ich hatte einen zu diesem Thema geöffnet, es kamen aber irgendwann keine Antworten.
Das Problem war, dass es gar keine Ausgabe gab. Die Daten schienen einfach zwischendurch verloren gegangen zu sein.
Allerdings habe ich jetzt hoffentlich die Lösung gefunden: array_merge()

@JPS: Ja, der Gedanke ist ja schon richtig. Aber ich würde eher den umgekehrten Weg gehen, da mir der SQL-Befehlssatz zu kompliziert in dem Sinne ist, dass ich mir ja noch mit PHP behelfen kann. Oder ist SQL wirklich wichtig und empfehlenswert?

SWFP
 

Duddle

Posting-Frequenz: 14µHz

AW: Statt mehreren unbenannten eindimensionalen Arrays per explode assoziatives Array

Ich hatte dir damals illustriert, was du falsch gemacht hast. Der Fehler war schlichtweg deine Syntax.
Was auch immer du für ein Heftpflaster in array_merge() gefunden hast, ich wette du nutzt es unnötigerweise. Aber ohne Code kann man, wie immer, nichts konkretes sagen.


Duddle
 

SWFP

SWFP Mitglied

AW: Statt mehreren unbenannten eindimensionalen Arrays per explode assoziatives Array

Und ich habe dir . Dann blieb die Antwort aus.
Dass da ein Fehler ist, habe ich ja verstanden. Und dachte nun, array_merge(), wäre die Lösung, da ich sonst keine fand. Was ist nun also an array_merge() falsch? Die Syntax im Beitrag hat sich bisher nicht geändert.

Für mein jetziges Problem habe ich ebenfalls eine Lösung gefunden:
PHP:
<?php
/* id ermitteln */
$int_bez = file("news_bez.txt", FILE_SKIP_EMPTY_LINES);
$item = $_GET['news'];
foreach($int_bez as $int_bez)
   {
	$int_bez = explode("|", $int_bez);
   }
$id = array_search($item, $int_bez);

/* News einlesen */
$news_data = file("news.txt", FILE_SKIP_EMPTY_LINES);
$news = $news_data[$id];
$news = stripslashes($news);
$zerlegen = array();
$zerlegen = explode("|", $news);

/* Datum & Uhrzeit bestimmen */
$tag[0] = "Sonntag"; 
$tag[1] = "Montag"; 
$tag[2] = "Dienstag"; 
$tag[3] = "Mittwoch"; 
$tag[4] = "Donnerstag"; 
$tag[5] = "Freitag"; 
$tag[6] = "Samstag"; 
$tagnummer = $zerlegen[3];
$wochentag=$tag[$tagnummer];
$jahr=$zerlegen[5];
$uhrzeit=$zerlegen[6]." Uhr";
$datum=$wochentag.", den ".$zerlegen[4].$jahr." um ".$uhrzeit;

/* Newsbeitrag ausgeben */
echo "<h1>$zerlegen[0]</h1>
<span id='datum'>$datum</span>
$zerlegen[2]";
?>

Und hier die Zuweisung der ID:
PHP:
<?php
$int_bez = file("news_bez.txt", FILE_SKIP_EMPTY_LINES);
$item = $_GET['news'];
foreach($int_bez as $int_bez)
   {
	$int_bez = explode("|", $int_bez);
   }
$id = array_search($item, $int_bez);
echo $id;
?>
 
Zuletzt bearbeitet:

Duddle

Posting-Frequenz: 14µHz

AW: Statt mehreren unbenannten eindimensionalen Arrays per explode assoziatives Array

Was bitte willst du mit
PHP:
foreach($int_bez as $int_bez)
   {
    $int_bez = explode("|", $int_bez);
   }
erreichen? PHP vergibt sehr viel, aber ich kann mir nicht vorstellen dass hier irgendetwas so passiert wie du es dir vorstellst.

Die erste Zeile in
PHP:
$zerlegen = array();
$zerlegen = explode("|", $news);
ist überflüssig, da die folgende sofort die Variable ersetzt.

In deinem Code ist kein array_merge() zu sehen, also nehme ich an das bezieht sich auf dein voriges Problem. Der gezeigte Code hat auch nichts mehr mit deiner ursprünglichen Frage zu tun, aber wenn du zufrieden damit bist ist ja alles gut *schulterzuck*


Duddle
 

SWFP

SWFP Mitglied

AW: Statt mehreren unbenannten eindimensionalen Arrays per explode assoziatives Array

Es funktioniert aber. Siehe erst einmal testweise.

Ja, ich weiß, dass es überflüssig ist, habe es nur noch nicht entfernt gehabt.

Ich habe nie gesagt, dass ich auch wirklich array_merge() verwenden würde. Denn es hat sich herausgestellt, dass ich keines brauchte.

Es hat sehr wohl mit meiner Ausgangsfrage zu tun. Es ist sogar die Lösung.

SWFP
 

afr0kalypse

Allwissendes Karmameerschweinchen!

AW: Statt mehreren unbenannten eindimensionalen Arrays per explode assoziatives Array

Also wenn ich dich jetzt richtig verstanden habe, willst du einfach aus deiner textdatenbank basierend auf der ID, der per GET aufgerufen wurde, einen einzelnen artikel auslesen?
PHP:
$news_data = file("db.txt", FILE_SKIP_EMPTY_LINES);
$news = $_GET['news']; 
$single_news_arr = explode('|', $news_data[$news]);
$title = $single_news_arr[0];
$article = $single_news_arr[1];
echo $title . "<br>";
echo $article;
 

SWFP

SWFP Mitglied

AW: Statt mehreren unbenannten eindimensionalen Arrays per explode assoziatives Array

Genau. So habe ich das doch auch gemacht, oder?
 

afr0kalypse

Allwissendes Karmameerschweinchen!

AW: Statt mehreren unbenannten eindimensionalen Arrays per explode assoziatives Array

nicht ganz. du benutzt unnötige schleifen und array initialisierungen.
 
Bilder bitte hier hochladen und danach über das Bild-Icon (Direktlink vorher kopieren) platzieren.
Antworten auf deine Fragen:
Neues Thema erstellen

Willkommen auf PSD-Tutorials.de

In unseren Foren vernetzt du dich mit anderen Personen, um dich rund um die Themen Fotografie, Grafik, Gestaltung, Bildbearbeitung und 3D auszutauschen. Außerdem schalten wir für dich regelmäßig kostenlose Inhalte frei. Liebe Grüße senden dir die PSD-Gründer Stefan und Matthias Petri aus Waren an der Müritz. Hier erfährst du mehr über uns.

Stefan und Matthias Petri von PSD-Tutorials.de

Nächster neuer Gratisinhalt

03
Stunden
:
:
25
Minuten
:
:
19
Sekunden

Neueste Themen & Antworten

Flatrate für Tutorials, Assets, Vorlagen

Zurzeit aktive Besucher

Statistik des Forums

Themen
118.635
Beiträge
1.538.449
Mitglieder
67.556
Neuestes Mitglied
Ggirl
Oben