Verständnis Frage zu "in_array"

ImDoomed

Mitglied
Hallo, ich habe hier eine hoffentlich kleine verständnis Frage.
Und zwar wenn ich "if(in_array($tagabgleich, $DatenVonDB[5])){" abfrage dann geht es, aber wenn ich "if(in_array($tagabgleich, $DatenVonDB[$counter])){" abfrage geht es nicht mit folgender Fehlermeldung:

Warning: in_array() expects parameter 2 to be array, null given in C:\xampp\htdocs\Blacksun\includes\warum_inc.php on line 142

der Counter wird vor der Schleife auf 0 deklariert und immer um 1 erhöht.

PHP:
if(in_array($tagabgleich, $DatenVonDB[5])){
	echo 'hit_in_array';echo '<br>';//geht
		echo '<td class="kalendertage" bgcolor="#'.$DatenVonDB[5]['farbe'].'">';
			echo $i.'. '.'<a href="#">'.$DatenVonDB[5]['kurztext'].'</a>';
		echo '</td>';
					
}elseif(in_array($tagabgleich, $DatenVonDB[$counter])){
	echo 'hit_in_array';echo '<br>';//geht nicht
			echo '<td class="kalendertage" bgcolor="#'.$DatenVonDB[$counter]['farbe'].'">';
					echo $i.'. '.'<a href="#">'.$DatenVonDB[$counter]['kurztext'].'</a>';
			echo '</td>';
					
}

Zum testen habe ich weiter oben in der Schleife

PHP:
if($tagabgleich == $DatenVonDB[$counter]['datum_anfang']){
	echo 'hit mit counter '.$counter;//geht
	echo '<br>';
	echo $DatenVonDB[$counter]['datum_anfang'];
	echo '<br>';
}

Wobei mir hier aufgefallen ist, dass die Ausgabe nur 1 mal kommt und dann nicht mehr.
 
Der zweite Parameter von der Funktion sollte ein Array sein. Wahrscheinlich existiert der Schlüssel $counter gar nicht!
 
Die Fehlermeldung sagt mMn dass entweder tagabgleich oder $counter NULL ist

Nachtrag:
ComFreak aht recht. Du hast du falsche Parameterreihenfolge

Code:
bool in_array ( mixed $needle , array $haystack [, bool $strict ] )
 
Zuletzt bearbeitet:
danke

also wenn auf der $counter-ID kein Datensatz ist kommt der Fehler, soweit hab ichs begriffen.

ich test grad rum:
counter = 0 geht dass erste mal.
Sobald der counter++ gemacht wurde, gehts nicht mehr.

PHP:
if(in_array($tagabgleich, $DatenVonDB[$counter])){
	echo 'hit_in_array';echo '<br>';//geht
		echo '<td class="kalendertage" bgcolor="#'.$DatenVonDB[$counter]['farbe'].'">';
			echo $i.'. '.'<a href="#">'.$DatenVonDB[$counter]['kurztext'].'</a>';
	        echo '</td>';
}
 
Es kann daran liegen, dass dann das Arary $Data[$counter] nicht exisitert. Gib mal per print_r $Data aus!

@yaslaw: Mich schreibt man mit ee ==> ComFreek
 
Da ich an einem Terminkalender arbeite und ich deshalb nicht immer weis wieviel Datensätze ich je Monat habe, suche ich gerade einen Weg um die Abfrage/+Ausgabe dynamisch zu gestalten.

Wenn ich immer die einzelnen Zahlen schreiben müsste, müsste ich ja je Datensatz was schreiben. Könnte mir wer sagen, wie ich des dann am besten aufbauen könnte.


PHP:
echo '<pre>';
echo '-->';
         print_r($DatenVonDB[$counter]);
echo '<--<br>';
echo '</pre>';

Ausgabe je Datensatz(7):
Code:
-->Array
(
    [0] => 1
    [termin_id] => 1
    [1] => Kurznachricht_1
    [kurztext] => Kurznachricht_1
    [2] => 2010-06-01
    [datum_anfang] => 2010-06-01
    [3] => 1200
    [uhrzeit_anfang] => 1200
    [4] => 2000
    [uhrzeit_ende] => 2000
    [5] => Nachrichten_1
    [nachricht] => Nachrichten_1
    [6] => 1
    [art_id] => 1
    [7] => 1
    [8] => Sonstiges
    [art] => Sonstiges
    [9] => 775C77
    [farbe] => 775C77
)
<--
 
ja schon, nur des Prob besteht dennoch.

Angenommen ich Frag ab wieviel einträge ich hab und sag dann, dass der $counter nur so weit gehen darf.
Und ich dann mit "in_array" abgleich bzw. die jeweiligen Inhalte dann schreibe, habe ich im Moment immer noch das Problem, dass der laufende $counter nicht als "Array-wertige-Id" Zahl zählt und deshalb einen Fehler ausgibt.

Zudem läuft er nicht durch bei "if(in_array($tagabgleich, $DatenVonDB[$counter])){ " und kommt nicht weiter, würde dies klappen könnte ich ja, alles nach den Datensätzen abfangen.
 
Wenn $counter!=NULL ist und ein Array im Array $Data mit der ID von dem Wert in $counter existiert, bin ich ratlos.
 
also der

datensaetze = 6
counter = 0

PHP:
if($counter < $datensaetze){
	echo '<pre>';
		echo '-->';
		        print_r($DatenVonDB[$counter]);
		echo '<--'.'<br>';
	echo '</pre>';
}

//-- CUT-- .....

if(in_array($tagabgleich, $DatenVonDB[$counter])){
	echo 'hit_in_array '.$DatenVonDB[$counter]['kurztext'].'<br>';//geht
	echo '<td class="kalendertage" bgcolor="#'.$DatenVonDB[$counter]['farbe'].'">';
		echo $i.'. '.'<a href="#">'.$DatenVonDB[$counter]['kurztext'].'</a>';
	echo '</td>';					
}


Ausgabe:
Code:
-->Array
(
    [0] => 1
    [termin_id] => 1
    [1] => Kurznachricht_1
    [kurztext] => Kurznachricht_1
    [2] => 2010-06-01
    [datum_anfang] => 2010-06-01
    [3] => 1200
    [uhrzeit_anfang] => 1200
    [4] => 2000
    [uhrzeit_ende] => 2000
    [5] => Nachrichten_1
    [nachricht] => Nachrichten_1
    [6] => 1
    [art_id] => 1
    [7] => 1
    [8] => Sonstiges
    [art] => Sonstiges
    [9] => 775C77
    [farbe] => 775C77
)
<--

hit_in_array Kurznachricht_1

-->Array
(
    [0] => 2
    [termin_id] => 2
    [1] => Kurznachricht_2
    [kurztext] => Kurznachricht_2
    [2] => 2010-06-01
    [datum_anfang] => 2010-06-01
    [3] => 1111
    [uhrzeit_anfang] => 1111
    [4] => 1122
    [uhrzeit_ende] => 1122
    [5] => Nachrichten_2
    [nachricht] => Nachrichten_2
    [6] => 1
    [art_id] => 1
    [7] => 1
    [8] => Sonstiges
    [art] => Sonstiges
    [9] => 775C77
    [farbe] => 775C77
)
<--

nun gibt print_r die restlichen Datensätze aus und dannach kommt wieder:
Warning: in_array() expects parameter 2 to be array, null given in C:\xampp\htdocs\Blacksun\includes\warum_inc.php on line 154

Im Kalender wird nur der 1. Tag geschrieben und rest fällt weg. Wenn ich in der "in_array"-Anweisung die Datensätze von Hand deklariere dann bekomm ich den jeweiligen Tag, im Kalender angezeigt.
Ich hab hier mal 2 Bilder zur besseren Verständnis gemacht:

$counter als Array_ID: http://images.foren-city.de/images/uploads/72421/kal1_125.jpg
Array_ID einzeln geschrieben: http://images.foren-city.de/images/uploads/72421/kal2_149.jpg
 
Zurück