繁体   English   中英

PHP数组搜索 - key => string

[英]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实际上不是一个函数。 这是一种语言结构。 这有一些影响:

  1. 你不能在函数返回时使用issetisset(foo())将无效)。 它只适用于变量(或变量组合,如数组访问或对象访问)。

  2. 它没有函数调用的开销,所以它总是很快。 函数调用的总体开销是一个需要担心的微优化,但值得一提的是,如果你处于紧密循环中,它可以加起来。

  3. 您不能将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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM