اذهب إلى المحتوى
  • 0

خطأ array offset on value type null في لارافل

Amir Alsaeed

السؤال

أقوم بجلب بيانات لأغراض تحوي نصوص وصور. ولكن عند إضافة أغراض بدون صورة ومحاولة جلبها مع بقية الأغراض يظهر لدي الخطأ التالي:

Trying to access array offset on value of type null

وهذا هو الكود الذي أقوم من خلاله بالحصول على الصورة:

$image=$user->images->first();

كيف يمكنني تلافي هذه المشكلة عند عدم وجود صور؟

رابط هذا التعليق
شارك على الشبكات الإجتماعية

Recommended Posts

  • 0

يمكنك تعريف متغير في بداية الميثود

$image=""

ثم نفحص اذا يوجد صورة ام لا باستخدم if وبداخل جسم if نقوم باحضار الصورة ونسندها الى المتغير الذي عرفناه في البداية

if($user->images){
	$image=$user->images->first();
}

يمكنك هكذا تجنب المشلكة 

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0

يمكن في PHP من الإصدار الثامن استخدام Null safe operator وهو إشارة الاستفهام للتأكد من أن قيمة الغرض ليست Null في استدعاء دوال عليه مثل:

$image=$user?->images?->first();
            ^        ^

هذا يمنع حدوث مشاكل في حال كان أحد العناصر Null.

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0

الخطأ الذي أدرجته لا يُسببه هذا السطر:

$image=$user->images->first();

فحتى لو لم يكن للمُستخدم أية صورة سيُرجع السطر أعلاه null. أي أن المُتغير image سيحوي null. ما يعني أنك إن أردت الوصول إلى أحد خصائص الغرض image بالشكل التالي:

$image['path']

سيُعطي الخطأ المُدرج في السؤال:

Trying to access array offset on value of type null

أما إن أردت الوصول للخاصية بإعتبار image كائن بهذا الشكل مثلاً:

$image->path;

سيُعطي الخطأ التالي:

Trying to get property 'path' of non-object

و في هذه الحالة يُمكنك إستخدام عامل التحقق من القيمة الفارغة Null Coalescing Operator بهذا الشكل مثلاً:

$image['path'] ?? "default image path"

و هكذا إن كانت هناك صورة سيتم إرجاع مسارها أما إن لم يكن هنالك صورة سيتم إرجاع مسار الصورة الإفتراضية و هذا فقط مثال للتوضيح.

رابط هذا التعليق
شارك على الشبكات الإجتماعية

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...