• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Arrays mit foreach auslesen

Status
Für weitere Antworten geschlossen.

vit_o

Neues Mitglied
Ich habe solche arrays in einer datei, die ich auslesen will:
Code:
$t[1]["text"]="titel"; 
$t[1]["über"]="irgend ein text"; 
$t[1]["link"]="download/31.08.08.php";
$t[1]["date"]=mktime(0,0,0,8,31,2008);
ich greife also von einer anderen datei aus diese zu und suche in den arrays nach dem angegebenen datum in diesem fall nach "31.08.08".Und von dem array in dem das steht will ich wissen wie es heißt. ICh habs damit versucht:
Code:
<?php
$datum_aus_input = "31.08.08";
$datei= file('arrays.php');
foreach($datei as $zeile)
{
    foreach($zeile as $link => $datum)
    {
    if(strstr("$datum_aus_input", "$datum")) break;
    }
}
echo(count($datum));
?>
was mach cih falsch?
 
von der zuweisung her so nahezu alles, was man falsch machen kann.
$datum wird nirgends gesetzt, kann also nicht gezählt werden, deine ergebnisse weist du der variablen $link[$datum] zu, was wiederum so nicht geht, doppelte einträge würden überschrieben, strstr prüft zwar auf das vorhandensein deines datums, allerdings steht in der zeile was ganz anderes als genau das datum und und und.

also:
PHP:
// vergelichswert
$datum_aus_input = "31.08.08";

// ein array mit den dateizeilen füllen
$datei= file('auswert.php');

// jede zeile durchforsten und auf vorhandensein des vergleichsertes prüfen
foreach($datei as $zeile)
{
    if(stristr($zeile, $datum_aus_input))
    {
       // ein array mit den ergebnissen füllen
       $datum[] = $zeile;
    }
}

$x = 1;
foreach($datum as $element)
{
    // das ergebnisarray durchsuchen und den variablen-namen auslesen
    $werte = explode("[",$element); // "[" mit "=" ersetzen, gibt dir den genauen stack wieder in dem die daten liegen.
    echo $x." -> ".$werte[0]."<br>";
    $x++;
}

?>
im array $datum steht nun die zeile, in der das prüfdartum zu finden ist, $datum hat den aufbau:

$datum[0]......
$datum[1]......
$datum[2]......
 
des is wurscht er kann schon die foreach in die foreach setzten ;) is ja so gedacht für mehrdimensionalle arrays aber dann sollte er es machen wie bei mir oben und
$t[1]['date'] = "31.08.08" muss in dem array file stehn dann gehts..
 
weils en mehrdimensionalles array ist ;-)


p.s bei mir gehts lokal wenn ich die "" weglasse.. ;-)

und mktime macht dir en timestamp aus der time des kann net mit strstr übereinstimmen..
und du musst schauen obs stimmt
also machs so
if(stristr($datum_aus_input, $datum) === true) break;


ups hatte ich eben auf die schnelle garnet gesehen xD
 
.....
$t[1]['date'] = "31.08.08" muss in dem array file stehn dann gehts..

laut seiner aussage ist das array bereits vorhanden und wird nicht geändert sondern nur ausgelesen.

$link => $datum führt unweigerlich ins leere, weil $datum im code nirgends gesetzt wird. er will wissen, wie die variablen heissen, auch das wird nirgends im code gesetzt. der code oben ist also entweder sionnlos, oder er hat seine frage nicht richjtig gestellt. oder ich habe das vollkommen falsch verstanden.
 
$datum führt dann zu dem wert..
is ja wie hier
PHP:
$bla = array();
$bla[0][1] = "1foo";
$bla[0][2] = "bar1";
$bla[1][1] = "foo";
$bla[1][2] = "bar";

foreach($bla as $dim_1){
    
    foreach($dim_1 as $dim_2 => $datum){
        echo $datum;
    }

}
Ausgabe is dann 1foobar1foobar..


aso ja hab ich net gelesen das es schon definiert ist dann muss er halt wenn das schon definiert is auch bei $datum_aus_input dann
$datum_aus_input = mktime(0,0,0,8,31,2008);
 
hmmm ... vllt habt ihr mich ein bisschen falsch verstanden...
ich habe eine datei mit arrays und ein datum(,dass ich nicht nur in der variable $t[?]["date"] vorkommt sondern auch in normaler schreibweise in $t[?]["link"]). und eig möchte ich nur rausfinden in welchem array das datum steht also was das "fragezeichen" für eine zahl ist.

Code:
$t[?]["link"]
 
hmm.. scheint keiner mehr was zu sagen... wahrscheinlich weil es schon so viele antworten gibt ...

Ich mach denn mal ein neues Thema mit dem selben Problem auf
 
ich täte es so machen
PHP:
$array = array();
$array[0] = array();
$array[0]['link'] = "blababal";

reset($array);
while(list($key, $value) = each($array)){

    if($value['link'] == "blababal") break;
     /** oder
     if(preg_match("/blababal/", $value['link'])) break; 
    **/
}
echo $key;
Ich denke so müsste es gehn ...
oder so
PHP:
$array = array();
$array[0] = array();
$array[0]['link'] = "blababal";
foreach($array as $key => $value){
if($value['link'] == "blababal") break;
     /** oder
     if(preg_match("/blababal/", $value['link'])) break; 
    **/
}
 
Zuletzt bearbeitet:
Status
Für weitere Antworten geschlossen.
Zurück
Oben