2016-05-12 2 views
0

Ich habe folgende Array:Überprüfung Array-Wert mit if-Anweisung immer wieder (Ausgang) falsch (sonst)

Array 
(
    [0] => class="amount">€39,00 
    [2] => class="subscription-details"> 
    [4] => für 
    [5] => 1 
    [6] => month 
) 

ich, ob das sechste Element des Wertes überprüfen will, ist „Monat“.

Ich benutze diesen Code:

print_r($test[6]); //Output month 

if($test[6] == 'month'){ 
    echo 'Alex'; //should output 
}else{ 
    echo 'Ecke'; //will output 
} 

Warum dieser Code gibt "Ecke" und nicht "Alex"?

Edit:

var_dump($test[6]) Ausgänge = string (12)

var_export($test[6]) Ausgänge = 'Monat'

var_export ($ test) =

<pre>array (
    0 => '<span', 
    1 => 'class="amount">&euro;39,00</span>', 
    2 => '<span', 
    3 => 'class="subscription-details">', 
    4 => 'für', 
    5 => '1', 
    6 => 'month</span>', 
)</pre> 
+0

Verwenden Sie var_dump() anstelle von print_r(), auf diese Weise können Sie erkennen, ob es unsichtbare Zeichen wie Leerzeichen in Ihren Array-Werten –

+0

Ich denke 'var_export 'für das gesamte Array könnte sogar noch besser sein, weil dies erlaubt, den Code zu kopieren und einzufügen und einen einfachen Test zu machen :) –

+0

ja .. Ich bearbeite es: p – cgee

Antwort

1

Es tut Ausgang Alex. Hier ist der einfachste Testfall, der Ihren Code fast so wiederholt, wie ich es verstehe.

<?php 
$test = [ 
    0 => 'class="amount">€39,00', 
    2 => 'class="subscription-details">', 
    4 => 'für', 
    5 => 1, 
    6 => 'month</span>', 
]; 

var_dump($test[6]); 
var_export($test[6]); 

if (trim(strip_tags($test[6])) == 'month') { 
    echo PHP_EOL.'Alex'.PHP_EOL; //should output 
} else { 
    echo PHP_EOL.'Ecke'.PHP_EOL; //will output 
} 

Als ich das Skript ausführen bekomme ich

string(12) "month</span>" 
'month</span>' 
Alex 

Können Sie bitte Ergebnis der var_export für Ihren Array zeigen. Wahrscheinlich haben Sie führende oder nachstehende Leerzeichen im Wort Monat. Vielleicht möchten Sie die Zeichenfolge trim vor dem Vergleich mit "Monat".

Update: Ich denke, Sie haben Ihre eigene Frage beantwortet, wenn var_dump Ergebnisse zur Verfügung gestellt. Der Wert in $test[6] ist kein Monat, aber month</span>

Ich habe den Test dafür aktualisiert und strip_tags Funktion hinzugefügt. Dies ist nur zum Spaß und um zu zeigen, dass Sie einfach zusätzliche Tags entfernen können.

+0

Ich bearbeite meine Frage .. Ihre Antwort funktioniert nicht für mich. – cgee

+0

Danke für den Tipp var_export() – cgee

0

Nun, dies scheint ein Problem zu sein ...

var_dump($test[6]) outputs = string(12) 

month nicht mehr als 12 Zeichen lang ist. Sie haben wahrscheinlich einige nicht druckbare Zeichen in dieser Zeichenfolge außer month