• 0

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

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

Trying to access array offset on value of type null

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

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

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

1 شخص أعجب بهذا

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة
شارك على الشبكات الإجتماعية
  • 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"

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

انشر على الشّبكات الاجتماعية


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

يجب أن تكون عضوًا لدينا لتتمكّن من التعليق

انشاء حساب جديد

يستغرق التسجيل بضع ثوان فقط


سجّل حسابًا جديدًا

تسجيل الدخول

تملك حسابا مسجّلا بالفعل؟


سجّل دخولك الآن