Bug #75328 [Fbk->Nab]: Unable to typecast numeric array key to string

From: Date: Fri, 06 Oct 2017 18:28:57 +0000
Subject: Bug #75328 [Fbk->Nab]: Unable to typecast numeric array key to string
References: 1  Groups: php.bugs 
Request: Send a blank email to php-bugs+get-211558@lists.php.net to get a copy of this message
Edit report at https://bugs.php.net/bug.php?id=75328&edit=1 ID: 75328 Updated by: requinix@php.net Reported by: langebroek at gmail dot com Summary: Unable to typecast numeric array key to string -Status: Feedback +Status: Not a bug Type: Bug Package: Arrays related Operating System: Any PHP Version: Irrelevant Block user comment: N Private report: N New Comment: Since arrays are naturally keyed by integers, having integers and integer strings be distinct would create havoc. I don't see any reason why an integer or string key should matter in your case. Just treat the key/column name like it was a string and it will act like a string. Previous Comments: ------------------------------------------------------------------------ [2017-10-06 18:18:14] langebroek at gmail dot com I'm using it to validate certain things in the data layer (SQL abstraction). array( 'col1', 'col2', 'col3' ) xor array( 'col1' => 'val1', 'col2' => 'val2', 'col3' => 'val3' ) It could happen that someone has a legitimate *SQL column with the name '1' but instead it being treated as an index. It's not the end of the world, I can think of an other way. Is there any reason why PHP does this? It'd be a shame if I were to base my validation on the fact that it ensures this and it is changed in the future. [Bug] can be closed, I spose. ------------------------------------------------------------------------ [2017-10-06 18:18:10] langebroek at gmail dot com I'm using it to validate certain things in the data layer (SQL abstraction). array( 'col1', 'col2', 'col3' ) xor array( 'col1' => 'val1', 'col2' => 'val2', 'col3' => 'val3' ) It could happen that someone has a legitimate *SQL column with the name '1' but instead it being treated as an index. It's not the end of the world, I can think of an other way. Is there any reason why PHP does this? It'd be a shame if I were to base my validation on the fact that it ensures this and it is changed in the future. [Bug] can be closed, I spose. ------------------------------------------------------------------------ [2017-10-06 17:43:32] requinix@php.net > it seems impossible to have a numeric string as an array key That is correct, and PHP takes explicit measures to make sure it cannot happen. What is your use case? ------------------------------------------------------------------------ [2017-10-06 17:40:16] langebroek at gmail dot com Description: ------------ Rather self explanatory; it seems impossible to have a numeric string as an array key. For the project I'm working on this is almost a necessity. Test script: --------------- $buf=array((string)1=>'x',"2"=>'y','3'=>'z'); #var_dump($buf);//all int var_dump(array_keys($buf));//clarify all int Expected result: ---------------- In at least one case I'd expect to see a string in the array key, or have an alternative method to achieve such. In some cases it is unwise to typecast at a later time. Actual result: -------------- array(3) { [0]=> int(1) [1]=> int(2) [2]=> int(3) } ------------------------------------------------------------------------ -- Edit this bug report at https://bugs.php.net/bug.php?id=75328&edit=1

« previous php.bugs (#211558) next »