我有这个数组:
$variableNames = [
'x1',
'x2',
'x3',
'x4',
'x5',
'x6',
'x7'
];
但是,当我使用这样的array_key_exists函数时:
array_key_exists('x3', $this->variableNames)
返回false
。但是,如果我有这个数组:
$variableNames = [
'x1' => null,
'x2' => null,
'x3' => null,
'x4' => null,
'x5' => null,
'x6' => null,
'x7' => null
];
返回true
。我如何使用第一个数组,并获得true
?
在第一个数组中,值也是null,就像第二个数组一样。那么,为什么第一个数组返回false
而第二个数组返回true
?
答案 0 :(得分:5)
array_key_exists()搜索键而不是值。
在第一种情况下,您x3
有价值。
所以,它没有搜索。
在这种情况下,您可以使用in_array(),此功能搜索 对于价值观。
在第二种情况下,x3
是关键,因此,正确搜索。
答案 1 :(得分:2)
键不是空的,永远不会。
$variableNames = [
'x1',
'x2',
'x3',
'x4',
'x5',
'x6',
'x7'
];
表示
$variableNames = [
0 => 'x1',
1 => 'x2',
2 => 'x3',
3 => 'x4',
4 => 'x5',
5 => 'x6',
6 => 'x7'
];
使用
in_array('x3', $this->variableNames)
代替。
答案 2 :(得分:0)
使用in_array()
代替array_key_exists()
在你的情况下,
$variableNames = ['x1',
'x2',
'x3',
'x4',
'x5',
'x6',
'x7'];
if (in_array("x3", $this->variableNames)) {
echo "Found x3";
}
答案 3 :(得分:0)
没有你的错误。该功能运行良好,您只是错误地使用它。 array_key_exists
寻找关键,而非价值。
您提供的第一个数组实际上被视为值数组。它们有索引键,由PHP自动添加。我print_r($variableNames)
,您会看到它会返回以下内容。
$variableNames = [
0 => 'x1',
1 => 'x2',
2 => 'x3',
3 => 'x4',
4 => 'x5',
5 => 'x6',
6 => 'x7'
];
您需要搜索该值。使用in_array()
或isset()
,两种方式都是正确的,一种方式比另一种更方便。