使用 php explode() 时未定义的偏移量

2022-08-30 20:12:39

我已经写了一个我认为非常简单的php函数,将名字分成名字和姓氏:explode()

// split name into first and last
$split = explode(' ', $fullname, 2);
$first = $split[0];
$last = $split[1];

但是,这会抛出带有消息的php错误。该函数似乎仍然可以工作,但我想清除导致错误的内容。我已经检查了php手册,但他们的示例使用与上面相同的语法。我想我明白什么是未定义的偏移量,但我不明白为什么我的代码会产生错误!"Undefined offset: 1"


答案 1

这是因为您的全名不包含空格。您可以使用一个简单的技巧来确保空间始终位于

 $split = explode(' ', "$fullname ");

(注意引号内的空格)

顺便说一句,您可以使用list()函数来简化代码

  list($first, $last) = explode(' ', "$fullname ");

答案 2

使用array_pad

例如:$split = array_pad(explode(' ', $fullname), 2, null);

  • explode会将字符串拆分为数组,没有任何限制。
  • array_pad如果分解数组的条目数少于,则将使用值填充该数组。null2

查看array_pad


推荐