ID: 13478
Comment by: dseo at premiant dot net
Reported By: nick at macaw dot demon dot co dot uk
Status: Bogus
Bug Type: Arrays related
PHP Version: 4.0.6
New Comment:
I agree with comment above. I have data coming in from database, and I
have to use mixed keys with string and integer, and the integer will
skip some numbers.
If I bring 'M', 'W', 1, 5, 11, 8 as keys, it will mix up it's order
where I have to sort the numbers. In database, I can pre-sort them
because it will sort 1, 11, 5, 8, so on.
Is there any way I can merge them without changing the key?
Previous Comments:
------------------------------------------------------------------------
[2003-11-25 07:30:29] partage_php at yahoo dot fr
<?
It's a bug !
Look this :
<?
$tbl_1 = array("025" => "hello 025",
"050" => "hello 050",
"120" => "hello 120");
$tbl_2 = array("010" => "hello 010",
"130" => "hello 130");
?>
Gives :
Array ( [025] => hello 025 [050] => hello 050 [0] => hello 120 [010] =>
hello 010 [1] => hello 130 )
Why '[1] => hello 130' and not '[130] => hello 130' ?
------------------------------------------------------------------------
[2001-09-28 08:28:14] [EMAIL PROTECTED]
This is not a bug, but a feature. All string indexes are converted to
numbers if possible, even like this:
<?php
$a = array ('4' => "test");
print_r ($a);
?>
will show:
Array
(
[4] => test
)
Making it bogus
------------------------------------------------------------------------
[2001-09-28 08:19:02] nick at macaw dot demon dot co dot uk
Found in 4.0.7RC2 but probably present before. Array merge changes keys
that are string-numeric. e.g.
<?
$arr1 = array('1'=>'one', '2'=>'two');
$arr2 = array('a'=>'all');
print_r(array_merge($arr1, $arr2));
?>
gives:
Array ( [0] => one [1] => two [a] => all )
A workaround kludge is to prefix string-numeric keys with a letter.
------------------------------------------------------------------------
--
Edit this bug report at http://bugs.php.net/?id=13478&edit=1