gpt4 book ai didi

PHP array_key_exists() 和 SPL ArrayAccess 接口(interface) : not compatible?

转载 作者:IT王子 更新时间:2023-10-29 00:03:45 27 4
gpt4 key购买 nike

我写了一个简单的集合类,这样我就可以将我的数组存储在对象中:

class App_Collection implements ArrayAccess, IteratorAggregate, Countable
{
public $data = array();

public function count()
{
return count($this->data);
}

public function offsetExists($offset)
{
return (isset($this->data[$offset]));
}

public function offsetGet($offset)
{
if ($this->offsetExists($offset))
{
return $this->data[$offset];
}
return false;
}

public function offsetSet($offset, $value)
{
if ($offset)
{
$this->data[$offset] = $value;
}
else
{
$this->data[] = $value;
}
}

public function offsetUnset($offset)
{
unset($this->data[$offset]);
}

public function getIterator()
{
return new ArrayIterator($this->data);
}
}

问题:在这个对象上调用 array_key_exists() 时,它总是返回“false”,因为 SPL 似乎没有处理这个函数。有什么办法解决这个问题吗?

概念验证:

$collection = new App_Collection();
$collection['foo'] = 'bar';
// EXPECTED return value: bool(true)
// REAL return value: bool(false)
var_dump(array_key_exists('foo', $collection));

最佳答案

这是一个已知问题,可能在 PHP6 中得到解决。在此之前,请使用 isset()ArrayAccess::offsetExists()

关于PHP array_key_exists() 和 SPL ArrayAccess 接口(interface) : not compatible?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1538124/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com