in_array()
$list = array(
"files/" => "/system/application/files/_index.php",
"misc/chat/" => "/system/application/misc/chat/_index.php"
);
我有$_GET['f']
,其中包含字符串files/
如何在数组中搜索可能的匹配?
如果在数组中找到该字符串,则应包含该文件
感谢您的帮助:)
答案 0 :(得分:6)
这很简单。您需要做的就是检查数组元素是否已设置。通常使用的语言结构是isset()
(是的,很明显)......
if (isset($list[$_GET['f']])) {
}
没有必要为此调用函数,isset
更清晰,更容易阅读(恕我直言)......
请注意,isset
实际上不是一个函数。这是一种语言结构。这有一些影响:
您无法在函数返回时使用isset
(isset(foo())
将无效)。它只适用于变量(或变量组合,如数组访问或对象访问)。
它没有函数调用的开销,所以它总是很快。函数调用的总体开销是需要担心的微优化,但值得一提的是,如果你处于紧密循环中,它可以加起来。
您不能将isset称为变量函数。这不起作用:
$func = 'isset';
$func($var);
答案 1 :(得分:4)
array_key_exists
是一个函数,它返回true,提供的键位于数组中。
if(array_key_exists( $_GET['f'], $list )) {
echo $list[$_GET['f']];
}
答案 2 :(得分:2)
您可以将in_array()
与array_keys()
结合使用:
if (in_array($_GET['f'], array_keys($list))) {
// it's in the array
}
array_keys()
从其输入数组返回一个键数组。使用$list
作为输入,它将产生:
array("files/", "misc/chat/");
然后,您使用in_array()
搜索array_keys()
的输出。
答案 3 :(得分:1)
if(array_key_exists($_GET['f'], $list)){
// Do something with $list[$_GET['f']];
}
答案 4 :(得分:0)
in_array()使用松散比较搜索数组中的键,除非设置了strict。 就像下面一样。
foreach ($array as $value){
if ($key == $value){
return true;
}
}
我的方式。
function include_in_array($key, $array)
{
foreach($array as $value){
if ( strpos($value, $key) !== false ){
return false;
}
}
}