php.net |  support |  documentation |  report a bug |  advanced search |  search howto |  statistics |  random bug |  login
Request #50401 Array Key Data Type Conversion
Submitted: 2009-12-07 20:20 UTC Modified: 2009-12-07 20:25 UTC
From: michael dot patrick dot mcnally at gmail dot com Assigned:
Status: Not a bug Package: Feature/Change Request
PHP Version: 5.3.1 OS: Windows Vista
Private report: No CVE-ID: None
View Add Comment Developer Edit
Welcome! If you don't have a Git account, you can't do anything here.
You can add a comment by following this link or if you reported this bug, you can edit this bug over here.
(description)
Block user comment
Status: Assign to:
Package:
Bug Type:
Summary:
From: michael dot patrick dot mcnally at gmail dot com
New email:
PHP Version: OS:

 

 [2009-12-07 20:20 UTC] michael dot patrick dot mcnally at gmail dot com
Description:
------------
It is necessary that I check to see if an array key has been set by the code.  Such as is with this code:

foreach($array as $key => $value){

     if(is_int($key)) echo 'the code assigned a key for this element';

}


How can I achieve this with the following array?:

array('1'=>'Yes','0'=>'No');


PHP converts the '1' into 1 which leaves me no detection for user assigned keys.  This is bad form.

Reproduce code:
---------------
---
From manual page: language.types.array
---



Patches

Add a Patch

Pull Requests

Add a Pull Request

History

AllCommentsChangesGit/SVN commitsRelated reports
 [2009-12-07 20:25 UTC] rasmus@php.net
This is part of being a dynamically typed language aimed at the Web.  
There are no types in an HTTP request.  Everything comes across as 
strings, or just data, if you will.  PHP tries to make sense of that 
data in the most logical way.  This isn't going to change.

If you need stronger typing, you need to apply some logic on your own 
to achieve that.  Like keep a separate array for user-changeable 
options, for example.
 
PHP Copyright © 2001-2024 The PHP Group
All rights reserved.
Last updated: Fri Apr 19 17:01:30 2024 UTC