Join Up!
104886 members and counting!

 
downloads | documentation | faq | getting help | mailing lists | reporting bugs | php.net sites | links 
search for in the  
previoussintáxis de while (mientras)Cambios en los mensajes de errornext
Last updated: Tue, 29 Oct 2002
view the printer friendly version or the printer friendly version with notes or change language to German

Tipos de expresiones

PHP/FI 2.0 usó el lado izquierdo de las expresiones para determinar de qué tipo debía ser el resultado. PHP 3.0 toma ambos lados en cuenta cuando determina el tipo de resultado, y eso puede producir resultados impredecibles si ejecuta guiones 2.0 en 3.0.

Considere este ejemplo:

$a[0]=5;
$a[1]=7;

$key = key($a);
while ("" != $key) {
    echo "$keyn";
    next($a);
}

En PHP/FI 2.0, esto mostraría los dos índices de $a. En PHP 3.0, no muestra nada. El motivo es que en PHP 2.0, al ser el argumento izquierdo de tipo cadena, se comparaba cadenas, y puesto que ciertamente "" no es igual a "0", el bucle continúa. En PHP 3.0, cuando se compara una cadena con un entero, se realiza una comparación de enteros (la cadena es convertida a entero). Esto es comparar entonces atoi("") que es 0, y variablelist que tambien es 0, y como 0==0, el bucle no avanzará.

La solución a esto es simple, reemplaze la declaración while con:

while ((string)$key != "") {

User Contributed Notes
Tipos de expresiones
add a note about notes
There are no user contributed notes for this page.
previoussintáxis de while (mientras)Cambios en los mensajes de errornext
Last updated: Tue, 29 Oct 2002
Copyright © 2001, 2002 The PHP Group
All rights reserved.
This mirror generously provided by: http://phpbuilder.com/
Last updated: Thu Oct 31 18:34:28 2002 EST