PHP的这种行为给我带来了麻烦。
<?php
$myArray = ["thing1" => "a", "thing2" => "b", "thing1" => "c"];
var_dump($myArray);
输出:
array(2) {
["thing1"]=>
string(1) "c"
["thing2"]=>
string(1) "b"
}
如果 PHP 在这种情况下抛出错误,我会更高兴。 有办法改变这种行为吗? 有时我有一个很长的数组,并且没有注意到我不小心定义了一个键两次。 这个错误可能很难追踪。
您可以创建自己的词典
class UniqueKeyDictionary {
private $data = [];
public function add($key, $value) {
if (array_key_exists($key, $this->data)) {
throw new Exception("Duplicate key: $key");
}
$this->data[$key] = $value;
}
public function get($key) {
return $this->data[$key] ?? null;
}
public function getAll() {
return $this->data;
}
}
使用方法
try {
$dict = new UniqueKeyDictionary();
$dict->add("foo", "bar");
$dict->add("foo", "baz"); // This will throw an exception
} catch (Exception $e) {
echo $e->getMessage();
}