【问题标题】:Specific problem with explode() - not returning anything爆炸()的具体问题 - 不返回任何东西
【发布时间】:2021-12-30 07:27:02
【问题描述】:

我正在尝试分解作为全名字符串的用户名。我正在尝试以下方法:

function name_letters_explode($name) {
  $letters = explode(' ', $name);
  if(count($letters) > 1) {
      return substr($letters[0], 0, 1) . substr($letters[1], 0, 1);
  } else {
      return substr($name, 0, 1);
  }
}
name_letters_explode($user->name);

但没有任何回报。当我删除 if 计数条件时(即检查用户是否输入了 1 个名称或其完整(2 个部分)名称,以便我可以决定返回什么 - 我收到一个错误 undefined array key 1 (名字包含两部分,我很确定,所以字符串中不可能没有第二个名字)。怎么办?

【问题讨论】:

  • 您的代码在我看来不错 - 您确定 $user->name 已设置且不为空吗?
  • 转出 $name 和 $letters 看看发生了什么。
  • 你可能忘记了回声或打印 :) (顺便说一句;我建议在爆炸前trim($name)
  • 是的,代码看起来不错,但是你对函数的返回值什么也没做。一个简单的回声指令会告诉你一些东西;)

标签: php explode


【解决方案1】:

首先你需要 count 条件。因为名称为 null 或没有空格('')。

很可能你在另一个函数或类方法中定义你的函数。 可以这样做,但是由于函数是在全局范围内定义的,如果该方法被调用两次,则会导致错误,因为 PHP 引擎会在第二次调用期间考虑重新定义该函数。

其次,如果你的代码在类方法中,你不需要创建一个函数,你可以将你的代码传递到函数之外

    public function index(){
        
    $name = "milad pegah";
    $letters = explode(' ', $name);
    if(count($letters) > 1) {
        return substr($letters[0], 0, 1) . substr($letters[1], 0, 1);
    } else {
        return substr($name, 0, 1);
    }
}

或者您可以在另一个方法中编写代码并在您的目标方法中返回。

public function name_letters_explode($name) {
      $letters = explode(' ', $name);
      if(count($letters) > 1) {
          return substr($letters[0], 0, 1) . substr($letters[1], 0, 1);
      } else {
          return substr($name, 0, 1);
      }
    }

    public function index(){
        
    $name = "milad pegah";
    
    return $this->name_letters_explode($name);
    }

else(在一个类之外你的代码没问题,它会工作。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-28
    • 2011-08-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多