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