【发布时间】:2018-02-15 07:24:52
【问题描述】:
读者,
我最近在调试中浪费了 40 分钟,因为一位同事在复制行时犯了一个小错误,而 PHP 没有触发任何错误。
原来的行类似于
$files = [
'identifier1' => '/path/to/file1'
];
复制后的目标行
$files = [
'identifier1' => '/path/to/file1',
'identifier2' => '/path/to/file2',
'identifier3' => '/path/to/file3'
];
台词到底是怎样的
$files = [
'identifier1' => '/path/to/file1',
'identifier1' => '/path/to/file2',
'identifier1' => '/path/to/file3'
];
与此相同
$files = [
'identifier1' => '/path/to/file3'
];
当您错误地尝试定义具有重复键的数组时,有没有办法让 php 触发错误(即使它只是一个警告)?
我们希望全局启用该选项,但 error_reporting(E_ALL) 无法正常工作。
【问题讨论】:
-
同一个键会自动覆盖。因此,您将永远不会在数组中至少两次获得相同的密钥。所以基本上
$files = [ 'identifier1' => '/path/to/file1', 'identifier2' => '/path/to/file2', 'identifier3' => '/path/to/file3' ];无法在 php 中实现。现在你的问题是什么? -
@WOUNDEDStevenJones 他展示了相同的键,所以它们被覆盖了。他不是在谈论价值观。
-
@AlivetoDie 你是对的。我本来建议还包括php.net/manual/en/function.array-keys.php 来检查密钥,但事实证明这无论如何都不起作用,因为
count($files)无论如何都会返回 1 而不是 3。
标签: php arrays hashmap syntax-error