inconsistency in offsetSet, offsetExists treatment of string enclosed integers
| Bug #40872 | inconsistency in offsetSet, offsetExists treatment of string enclosed integers | ||||
|---|---|---|---|---|---|
| Submitted: | 2007-03-20 20:00 UTC | Modified: | 2007-03-20 20:28 UTC | ||
| From: | piter75 at gmail dot com | Assigned: | helly (profile) | ||
| Status: | Closed | Package: | SPL related | ||
| PHP Version: | 5.2.1 | OS: | * | ||
| Private report: | No | CVE-ID: | None | ||
[2007-03-20 20:00 UTC] piter75 at gmail dot com
Description:
------------
ArrayIterator's methods offsetSet and offsetGet treat the string enclosed integers ('1', '2', ....) as integers, but offsetExists treats them as strings and returns false even if the value exists at the specified offset.
Reproduce code:
---------------
<?php
class Project {
public $id;
function __construct($id) {
$this->id = $id;
}
}
class ProjectsList extends ArrayIterator {
public function add(Project $item) {
$this->offsetSet($item->id, $item);
}
}
$projects = new ProjectsList();
$projects->add(new Project('1'));
$projects->add(new Project(2));
var_dump($projects->offsetExists(1));
var_dump($projects->offsetExists('2'));
?>
Expected result:
----------------
boolean true
boolean true
Actual result:
--------------
boolean true
boolean false
Patches
Pull Requests
History
AllCommentsChangesGit/SVN commits
[2007-03-20 20:28 UTC] helly@php.net