empty()
necesidades para acceder al valor de referencia (con el fin de comprobar si que los puntos de referencia a algo que existe), y PHP antes 5.5 no soportaba referencias a valores temporales devueltos por funciones.
Sin embargo, el verdadero problema que tiene es que utilice empty()
en absoluto, creyendo erróneamente que el valor de "vacío" es diferente de "falsa".
Vacío es solo un alias para !isset($thing) || !$thing
. Cuando la cosa se está comprobando siempre existe (en los resultados de las llamadas a funciones PHP siempre existe), la función empty()
es nada más que un operador de negación.
PHP no tiene el concepto de vacío. Los valores que se evalúan como falso están vacíos, los valores que se evalúan como verdadero no están vacíos. Es lo mismo. Este código:
$x = something();
if (empty($x)) …
y esto:
$x = something();
if (!$x) …
tiene siempre el mismo resultado, en todos los casos, para todos los tipos de datos (porque $x
se define empty()
es redundante).
El valor de retorno del método siempre existe (incluso si no tiene la instrucción return
, existe un valor de retorno y contiene null
). Por lo tanto:
if (!empty($r->getError()))
es lógicamente equivalente a:
if ($r->getError())
Probablemente en PHP 5.5 se le permitirá pasar expresiones a ' empty': https://wiki.php.net/rfc/empty_isset_exprs –
[La guía definitiva para isset de PHP Y vacía] (http://kunststube.net/isset/) – deceze
Ok, me parece [respuesta de porno] (http: //stackoverflow.com/a/4328049/476) también corrija este mi código 'if (! $ e-> find ('div')) 'que verifica si el elemento HTML DOM actual está vacío o no. Lo uso dentro de un bucle para imprimir solo una Div sin div interna dentro de ella. –