这很可能不是可以通过复制和粘贴复制的东西。我在这里遇到的问题是array_key_exists
根本行不通。
我已将代码打印到页面上;它绝对是数组类型,不是必需的。数组键存在;我在字符串和整数之间进行了转换,但找不到它回来了。
现在,最令人费解的是我在
$presets = $this->presets->$name;
echo gettype($version).'<br>';
foreach ( $presets as $key=>$test ) {
if ( $key===$version ) echo 'string found1<br>';
elseif ( $key==$version ) echo 'string found2<br>';
}
if ( !array_key_exists($version,$presets) )
echo 'array_key_exists string fail.<br>';
$version = intval($version);
echo gettype($version).'<br>';
foreach ( $presets as $key=>$test ) {
if ( $key===$version ) echo 'int found1<br>';
elseif ( $key==$version ) echo 'int found2<br>';
}
if ( !array_key_exists($version,$presets) )
echo 'array_key_exists int fail.<br>';
输出:
string
string found1
array_key_exists string fail.
integer
int found2
array_key_exists int fail.
输出非常奇怪,因为在int
&string
搜索中,键匹配。事实上,在string
搜索中,它会输出“string found1”,这意味着它 === 数组中的一个键。那么,为什么array_key_exists
总是在生产FALSE
?
该变量$presets
是一些数组,其索引是使用 preg_match 正则表达式代码创建的以解析索引。这是我能想到的唯一增加的谜团,尽管手动比较已经证明发现了 === 值,因此这些都不重要。array_key_exists
应该返回TRUE
Array
(
[100] => stdClass Object
()
)