explode() 的特定问题 - 不返回任何内容

Specific problem with explode() - not returning anything

我正在尝试分解用户名,它是一个全名字符串。我正在尝试以下操作:

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);

但 return 中没有任何内容。当我删除 if count 条件时(即检查用户是否输入了 1 个名称或其完整(2 部分)名称,以便我可以决定 return 的内容 - 我收到错误 undefined array key 1(这个名字有两部分,我敢肯定,所以不可能没有第二个名字)怎么办?

首先你需要 count condation.because mady name is null or have not space(' ').

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

其次,如果您的代码在 class 方法中,则不需要创建函数,您可以将代码传递到函数外部

    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);
    }
}

或者您可以在另一个方法中编写代码,然后 return 在您的目标方法中编写代码。

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(在 class 之外,您的代码没问题,它会起作用。