kullanarak php patlayabilir zaman tanımsız offset ()

5 Cevap php

Ben önadlı ve soyadı bir isim bölmek için php explode() function çok basit bir kullanımı olduğunu düşündüğüm yazdık:

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

However, this is throwing up a php error with the message "Undefined offset: 1". The function still seems to work, but I'd like to clear up whatever is causing the error. I've checked the php manual but their examples use the same syntax as above. I think I understand what an undefined offset is, but I can't see why my code is generating the error!

5 Cevap

Lütfen fullname bir alan içermiyor çünkü bu. Emin uzay her zaman yapmak için basit bir hile kullanmak nerede

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

(Tırnak içindeki boşluğa dikkat edin)

BTW, kodunuzu basitleştirmek için () fonksiyon listesini kullanabilirsiniz

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

BTW, bu algoritma her zaman wokr olmaz. Yaklaşık iki-kelime vb "De Castro", "Dela Cruz", "La Rosa" gibi Latina veya İtalyanca soyadları adları Bölünmüş yerine 2 kelime 3 dönecektir düşünüyorum:

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

Sen "Monsour La Düzenleme Profili" "Ana De Hoş geldiniz" ya da benzeri mesajları ile bitireceğiz.

Aynı şey vb "Anne Marie Miller", "William Howard Taft" gibi to-kelime isimleri olur

Sadece bir ipucu.

Tahminen ne olursa olsun, $fullname bir boşluk içermez, bu yüzden $split, tek bir öğe içeren bir dizi, yani $split[1], bir tanımsız ofset ifade eder.

Bu 'garip, burada doğru çalışıyor. I bir dize ile çalıştığınızda the cat walks ve de sadece the yapmak ve bir hata üretmek değildir. I print_r ile çıkışı ettik

Lütfen $fullname Eğer hatası alıyorum benziyor ne?

Bu $fullname, bir boşluk karakteri içermiyordu aslında nedeniyle olabilir.

Bu örnek bildiriminde w / o sorunu düzeltmek gerekir:

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

Şimdi $fullname ise "musoNic80" Bir uyarı mesajı almazsınız.

"@" karakter kullanımına dikkat edin.

HTH Elias