غير معروف تعويض عند استخدام فب تنفجر ()

StackOverflow https://stackoverflow.com/questions/1807849

  •  05-07-2019
  •  | 
  •  

سؤال

ولقد كتبت ما اعتقدت استخدام بسيط جدا من وظيفة فب explode() لتقسيم الاسم إلى الاسم الاول واسم العائلة:

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

ولكن، وهذا ما يفتح خطأ فب مع "Undefined offset: 1" الرسالة. وظيفة لا يزال يبدو للعمل، ولكن أود أن توضيح كل ما تسبب في حدوث الخطأ. لقد دققت في فب دليل لكن الأمثلة على استخدام نفس بناء الجملة كما في الاعلى. أعتقد أنني أفهم ما غير معروف إزاحة هو، ولكن لا استطيع ان ارى لماذا قانون بلدي يولد الخطأ!

هل كانت مفيدة؟

المحلول

وهذا لأن FULLNAME لا يحتوي على مسافة. يمكنك استخدام خدعة بسيطة للتأكد من أن الفضاء هو دائما حيث

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

و(لاحظ المسافة داخل الاقتباس)

وراجع للشغل، يمكنك استخدام قائمة () لتبسيط التعليمات البرمجية

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

نصائح أخرى

ويمكن أن يكون هذا بسبب حقيقة أن $fullname لا تحتوي على حرف مسافة.

وهذا المثال يجب إصلاح مشكلتك ث / س عرض هذا الإشعار:

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

والآن إذا $fullname هو "musoNic80" أنك لن تحصل على رسالة إشعار.

ملاحظة استخدام أحرف "@".

وHTH الياس

وراجع للشغل، من شأنها أن الخوارزمية لا تعمل طوال الوقت. التفكير في كلمة اثنين لاتينا أو الإيطالية أسماء الألقاب مثل "دي كاسترو"، "ديلا كروز"، "لا روزا"، الخ سبليت سيعود 3 بدلا من 2 الكلمات:

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

وأنت سوف ينتهي مع رسائل مثل "مرحبا بعودتك آنا دي" أو "تحرير الملف الشخصي ل منصور لا".

وسوف ونفس الشيء يحدث لأسماء من كلمتين مثل "آن ماري ميلر"، "ويليام هوارد تافت"، وما إلى ذلك.

ومجرد تلميح.

ويفترض، مهما $fullname هو لا يحتوي على مسافة، لذلك $split صفيف يحتوي على عنصر واحد، لذلك يشير $split[1] إلى غير معرف الإزاحة.

وهذا غريب، انها تعمل الصحيح هنا. عندما أحاول مع the cat walks سلسلة وأيضا سوف the مجرد القيام به ولا ينتج خطأ. لقد أنتج ذلك مع print_r

ما هو $fullname الخاص بك يبدو عندما تحصل على خطأ؟

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top