문제

나는 PHP의 매우 간단한 사용이라고 생각한 것을 썼습니다. explode() 이름을 예측 이름과 성으로 나누는 기능 :

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

그러나 이것은 메시지에 PHP 오류를 던지고 있습니다. "Undefined offset: 1". 함수는 여전히 작동하는 것처럼 보이지만 오류를 일으키는 모든 것을 정리하고 싶습니다. 나는 그것을 확인했다 PHP 매뉴얼 그러나 그들의 예제는 위와 동일한 구문을 사용합니다. 정의되지 않은 오프셋이 무엇인지 이해하고 있지만 코드가 오류를 생성하는 이유를 알 수 없습니다!

도움이 되었습니까?

해결책

전체 이름에 공간이 포함되어 있지 않기 때문입니다. 간단한 트릭을 사용하여 공간이 항상 어디에 있는지 확인할 수 있습니다.

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

(따옴표 내부의 공간에 주목하십시오)

BTW, List () 함수를 사용하여 코드를 단순화 할 수 있습니다.

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

다른 팁

이것은 사실 일 수 있습니다 $fullname 공간 문자가 포함되어 있지 않았습니다.

이 예제는 다음 통지를 표시하는 문제를 해결해야합니다.

$split = explode(' ', $fullname, 2);
$first = @$split[0];
$last = @$split[1];

이제 $fullname ~이다 "musoNic80" 통지 메시지를받지 못합니다.

사용에 유의하십시오 "@" 캐릭터.

HTH ELIAS

BTW, 그 알고리즘은 항상 작동하지 않습니다. "de Castro", "Dela Cruz", "La Rosa"등과 같은 2 단어 라티 나 또는 이탈리아 성 이름에 대해 생각해보십시오. Split은 2 단어 대신 3을 반환합니다.

Array {
  [0] => 'Pedro'
  [1] => 'De'
  [1] => 'Castro'
}

"Welcome Back Ana de"또는 "Monsour LA의 편집 프로필"과 같은 메시지가 끝납니다.

"Anne Marie Miller", "William Howard Taft"등과 같은 두 단어 이름에 대해서도 마찬가지입니다.

그냥 팁.

아마도, 무엇이든 $fullname IS에는 공간이 포함되어 있지 않습니다 $split 단일 요소를 포함하는 배열입니다 $split[1] 정의되지 않은 오프셋을 나타냅니다.

그 '이상한, 그것은 여기서 정확하게 작동합니다. 문자열로 시도 할 때 the cat walks 그리고 그냥 the 오류가 발생하지 않습니다. 나는 그것을 출력했다 print_r

당신은 무엇입니까 $fullname 오류가 발생했을 때 보이는 것 같습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top