我最近在我的代码中使用 array_search 函数时发现了问题。我正在数组“$allcraftatts”中搜索值“sharp”。我试图通过设置两行实验来隔离问题:
$testcopy=$allcraftatts;
$testsharp=array_search("sharp", $testcopy);
使用“print_r(get_defined_vars());” 后来,我得到了这个结果:
[testcopy] => Array
(
[0] => 0
[1] => 0
[2] => 0
[3] => 0
[4] => 0
[5] => 0
[6] => Sharp Stone
[7] => Sharp Stones
[8] => stone
[9] => object
[10] => sharp
[11] => hard
[12] => 0
[13] => 0
[14] => 0
[15] => 0
[16] => 0
[17] => 0
[18] => 0
)
[testsharp] => 0
我确保不会在其他任何时间修改这些变量。
现在,如果我将代码更改为
$testcopy=$allcraftatts;
unset($testcopy[0]);
$testsharp=array_search("sharp", $testcopy);
它返回“1”。
这让我相信它总是返回数组中的第一个键。
这让我很困惑!这是让您担心语言本身有问题的错误之一。不管这是多么令人怀疑,我实际上最终被驱使去查看 PHP 源代码是否有问题,但不幸的是无法理解它。
看到这么简单的功能,我肯定会被不可避免的简单答案彻底羞辱,但此时,我只想要一个答案。