【问题标题】:"array_key_exists()" not working properly“array_key_exists()”无法正常工作
【发布时间】:2014-04-17 15:43:58
【问题描述】:

代码

$descriptionArr = array( "uk/page"=>"", "uk/page-two"=>"description of page 2");

function getDescription($uri){
    if (array_key_exists($uri, $descriptionArr)) {
      return $descriptionArr[$uri];
    } else {
      return false;
    }
}

情况

  • 当我使用参数“uk/page-two”调用函数时,它会返回描述
  • 当我使用参数“uk/page”调用函数时,它返回 false 而不是空字符串

问题

我希望它返回空字符串,并且仅在传递的参数作为数组中的键不存在时才返回 false。

【问题讨论】:

  • 您是否尝试将值设为“NULL”而不是空字符串?

标签: php arrays array-key-exists


【解决方案1】:

这应该可行:

$descriptionArr = array( "uk/page"=>"", "uk/page-two"=>"description of page 2");

function getDescription($uri, $descriptionArr){
    if (false !== array_key_exists($uri, $descriptionArr)) {
      return $descriptionArr[$uri];
    } else {
      return false;
    }
}

【讨论】:

  • 这不会,因为$descriptionArr 在函数内部不可用。
  • 它有效,我确实在函数中有数组,所以这不是问题。有人能解释一下false !== array_key_... 到底做了什么吗?
  • ===(和!==)不允许类型转换。见stackoverflow.com/questions/589549/php-vs-operator
  • 函数已经返回一个布尔值,所以显式的 !== 是多余的。
【解决方案2】:

您可以将函数更改为以下内容:

function getDescription($uri) {
    if (isset($descriptionArr[$uri])) {
      return $descriptionArr[$uri];
    } else {
      return false;
    }
}

【讨论】:

    猜你喜欢
    • 2021-08-16
    • 2016-12-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-01
    • 1970-01-01
    • 2012-07-11
    • 2018-04-08
    • 2017-04-20
    相关资源
    最近更新 更多