2015-07-07 18 views
6

ich erfrischend etwas älteren Code (jemand anderes geschrieben hat), und über das kam:Verwirrende if-Anweisung in PHP

if (empty ($role_data["role_id" == 1])) 

, was die Gründe (falls vorhanden) sind, würde man die oben anstelle von ?:

if ($role_data["role_id"] != 1) 

IMO Lesbarkeit ist schlechter und es ist mehr Code. Leistung ist hier kein Faktor.

--EDIT--

Ich sollte erwähnen, dass der erwartete Eingang ($ role_data [ "role_id"]) ist eine Zahl zwischen 0 bis 5 (einschließlich)


--Mehr INFO--

Ich habe den Code beim ersten Mal missverstanden. Aber hier ist, was passiert:

$role_id = htmlspecialchars (mysql_real_escape_string ($_GET["role_id"])); 
$role_data = $db->fctSelectData ("core_role" , "`role_id` = '" . $role_id . "'"); 

Dies gilt sowohl für die Erstellung der Rolle die Berechtigungen zu erhalten. Aber wenn eine ungültige $role_id an erster Stelle (über die $ _GET Parameter) gegeben, gibt es nichts, also für einen leeren Wert Einchecken:

if (empty ($role_data["role_id" == 1])) 

Ich bin immer noch nicht ganz klar, warum es auf diese Weise geschrieben

+3

'if (leer ($ role_data [" role_id "== 1]))'! == 'if ($ role_data [" role_id "]! = 1)'. Dein alter Code ist: 'if (leer ($ role_data [" role_id "== 1]))' -> 'if (leer ($ role_data [0]))' (Weil '" role_id "== 1' = FALSE und wegen Typ Jonglieren = 0) – Rizier123

+0

@ Rizier123 ist richtig, beide sind unterschiedlich. –

+2

Es ist jemand, der versucht, süß zu sein und sich zu zeigen, während er beides kläglich versagt. Diese oder gesamte Cargocult-Programmierung –

Antwort

4

Die Linie

if (empty($role_data["role_id" == 1])) 

in übersetzt wird ...

if (empty($role_data[0])) 

... vom PHP-Interpreter. Dieser Code könnte ein „Witz“, ein lustiger Hack oder ein Fehler wie die Linie sein:

if (empty($role_data["role_id"]) == 1) 

..sort Sinn macht.