2016-04-05 12 views
1

Warum muss Array-Indizierung mit geschweiften Klammern innerhalb eines If-Anweisung Ausdruck durchführen? Warum ist das Folgende illegal?PHP-Array-Dereferenz in If-Anweisung Ausdruck

$birthday = "1990-01-18"; 
$date_birth = explode("-", $birthday); 
if ($date_birth[1] != "00" && $date_birth[2] != "00") { 
    $monthName = date('F', mktime(0, 0, 0, $date_birth[1], 10)); 
    echo "$monthName $date_birth[2]"; 
} 

jedoch folgende Arbeiten fein:

$birthday = "1990-01-18"; 
$date_birth = explode("-", $birthday); 
if ($date_birth{1} != "00" && $date_birth{2} != "00") { 
    $monthName = date('F', mktime(0, 0, 0, $date_birth[1], 10)); 
    echo "$monthName $date_birth[2]"; 
} 
+0

Beide scheinen zu arbeiten http://sandbox.onlinephpfunctions.com/code/7228bf53485ff759fa17d61ca900768d74a9a162 und die erste Version ist die "richtige". –

Antwort

1

Die beiden Versionen sind genau gleichwertig, as shown here.

Auch die php manual page on arrays besagt, dass:

Beide eckigen Klammern und geschweifte Klammern austauschbar für den Zugriff auf Array-Elemente verwendet werden (zB $array[42] und $array{42} werden beide das gleiche tun [...])