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

Reply via email to