ID: 28435 Comment by: programmer at bardware dot de Reported By: ofirin at yahoo dot com Status: Open Bug Type: Arrays related Operating System: Any PHP Version: 4CVS-2004-05-18 (stable) New Comment:
I noticed this problem with PHP5 RC2 on a Win2k box as an Apache2-module. I have some HMTL-Checkboxes and on the server side want to check the selected values. My checkboxes are equally named name="choice2[]" what lets PHP generate an array $_POST["choice2"][0] $_POST["choice2"][1] $_POST["choice2"][2] etc. according to the selected values. Each checkbox has it's unique value attribute. To test for a certain value I "reverse" this array with $arrTmp=array_count_values($_POST["choice2"]); I now want to access $arrTmp[1] to check if the checkbox with the attribute value="1" was selected. The respective value was - if selected - 1, otherwise it's not existent in the $_POST["choice2"]-Array. This did not work. $arrTmp["1"] didn't work either. It was no way possible to access a member of the array. The other poster mentioned the indexes are generated as strings, I want to point they cannot be accessed at all. It worked best on PHP 4.3.6 Best, Bernhard Previous Comments: ------------------------------------------------------------------------ [2004-05-18 19:04:43] ofirin at yahoo dot com Description: ------------ I don't know if this is a php5 or php4 bug, but I'm sure something's wrong here. Whenever in php5 I do an array_count_values() on an array that contains numeric values as strings the result array uses string keys instead of the numeric values as indexes. This doesn't happen in php4. I don't know what behaivor is correct. I'm using the latest cvs versions of both php4 and php5 btw. Reproduce code: --------------- <?php $books = Array('10', '3', '6', '10'); $quantities = array_count_values($books); var_dump($books); var_dump($quantities); ?> Expected result: ---------------- This is what happens in php4: array(4) { [0]=> string(2) "10" [1]=> string(1) "3" [2]=> string(1) "6" [3]=> string(2) "10" } array(3) { [10]=> int(2) [3]=> int(1) [6]=> int(1) } Actual result: -------------- This is what happens if php5: array(4) { [0]=> string(2) "10" [1]=> string(1) "3" [2]=> string(1) "6" [3]=> string(2) "10" } array(3) { ["10"]=> int(2) ["3"]=> int(1) ["6"]=> int(1) } ------------------------------------------------------------------------ -- Edit this bug report at http://bugs.php.net/?id=28435&edit=1