[英]PHP Array Search - key => string
我在使用in_array()
遇到了一些麻烦
$list = array(
"files/" => "/system/application/files/_index.php",
"misc/chat/" => "/system/application/misc/chat/_index.php"
);
我有这个$_GET['f']
,它包含字符串files/
。
如何在数组中搜索可能的匹配?
如果在数组中找到该字符串,则应包含该文件
谢谢你的帮助 :)
这很简单。 您需要做的就是检查数组元素是否已设置。 通常使用的语言结构是isset()
(是的,很明显)...
if (isset($list[$_GET['f']])) {
}
没有必要为此调用函数, isset
更清晰,更易于阅读(恕我直言)...
请注意, isset
实际上不是一个函数。 这是一种语言结构。 这有一些影响:
你不能在函数返回时使用isset
( isset(foo())
将无效)。 它只适用于变量(或变量组合,如数组访问或对象访问)。
它没有函数调用的开销,所以它总是很快。 函数调用的总体开销是一个需要担心的微优化,但值得一提的是,如果你处于紧密循环中,它可以加起来。
您不能将isset称为变量函数。 这不起作用:
$func = 'isset'; $func($var);
array_key_exists
是一个函数,它返回数组中提供的键的true。
if(array_key_exists( $_GET['f'], $list )) {
echo $list[$_GET['f']];
}
您可以将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()
搜索输出。
使用array_key_exists
。
if(array_key_exists($_GET['f'], $list)){
// Do something with $list[$_GET['f']];
}
in_array()使用松散比较在数组中搜索key,除非设置了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;
}
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.