Edit report at http://bugs.php.net/bug.php?id=51829&edit=1

 ID:               51829
 User updated by:  josefrancklin at yahoo dot com dot br
 Reported by:      josefrancklin at yahoo dot com dot br
 Summary:          Array output unexpected result
 Status:           Bogus
 Type:             Bug
 Package:          Arrays related
 Operating System: Windows XP
 PHP Version:      5.3.2

 New Comment:

//for ($i=0 ; $i<3 ; $i++){



// first loop: $i is 0;



        $array_id = array( 0 => 0 , 1 => 1 , 2 => 2 );

        $array_id[$i] = "x";  // $i is 0, then $array_id[0] = "x"

//      print_r($array_id) here results Array ( [0] => x [1] => 1 [2] => 2 )

        for ($j=0 ; $j<3 ; $j++)

        {

                if ($array_id[$j] != $j) // $j is 0, then if ($array_id[0] != 0)

                        print ", not $j"; // $array_id[0] is "x" (!=0), but 
nothing printed

//((problem, how to solve???))

        }





// second loop: $i is 1;



        $array_id = array( 0 => 0 , 1 => 1 , 2 => 2 );

        $array_id[$i] = "x";  // $i is 1, then $array_id[1] = "x"

//      print_r($array_id) here results Array ( [0] => 0 [1] => x [2] => 2 )

        for ($j=0; $j<3; $j++)

        { // lets go to $j=1...

                if ($array_id[$j] != $j) // $j is 1, then if ($array_id[1] != 1)

                        print ", not $j"; // $array_id[1] is "x" (!=1), is's 
printed ((ok))

        }

//}



Problem... I've tried several forms to change the code in order to work
correct but no success... I think I don't know programming... (and write
in english too)

-.-


Previous Comments:
------------------------------------------------------------------------
[2010-05-14 21:44:19] dtajchre...@php.net

Thank you for taking the time to write to us, but this is not
a bug. Please double-check the documentation available at
http://www.php.net/manual/ and the instructions on how to report
a bug at http://bugs.php.net/how-to-report.php

You have discovered type juggling. See:
http://www.php.net/manual/en/language.types.string.php#language.types.string.conversion



'x' turns into 0. 0 == 0. Your if statement is never executed.

------------------------------------------------------------------------
[2010-05-14 20:09:16] josefrancklin at yahoo dot com dot br

Description:
------------
Code typed below generates unexpected result in the [0] term from an
array.

Test script:
---------------
for ($i=0;$i<3;$i++)

{

        $array_id=array( 0 => 0 , 1 => 1 , 2 => 2 );

        $array_id[$i]="x";

        for ($j=0;$j<3;$j++)

        {

                print "term [$j] is $array_id[$j]";

                if ($array_id[$j]!=$j)

                        print ", not $j";

                print "<BR>\n";

        }

        print "<BR>\n";

}



Expected result:
----------------
term [0] is x, not 0

term [1] is 1

term [2] is 2



term [0] is 0

term [1] is x, not 1

term [2] is 2



term [0] is 0

term [1] is 1

term [2] is x, not 2





Actual result:
--------------
array[0] is x

array[1] is 1

array[2] is 2



array[0] is 0

array[1] is x, not 1

array[2] is 2



array[0] is 0

array[1] is 1

array[2] is x, not 2






------------------------------------------------------------------------



-- 
Edit this bug report at http://bugs.php.net/bug.php?id=51829&edit=1

Reply via email to