Emad Saif نشر 14 أبريل 2022 أرسل تقرير نشر 14 أبريل 2022 أحاول الحصول على اسم الملف من المسار الخاص به بالشكل التالي: <?php $file_path = "/path/to/image.png"; $file_name = end(explode('/', $file_path)); echo $file_name; لكن يظهر الخطأ التالي: Notice: Only variables should be passed by reference in /home/user/scripts/code.php on line 4 image.png ما سبب هذا الخطأ؟ وكيف أقوم بإصلاح هذه المشكلة؟ 2 اقتباس
1 Adnane Kadri نشر 14 أبريل 2022 أرسل تقرير نشر 14 أبريل 2022 هذا ليس خطأ، فهو إشعار. ويتم اخراج هذا الإشعار لأن الوظيفة end () تتوقع مرجعًا reference لشيء تريد تغييره والذي يتوقع ان يكون متغيرا، في حين انك تقوم بإسناد التعريف مباشرة. أي انه لن يمكنك تمرير نتيجة explode مباشرة اليها دون حفظها في متغير اولا واستدعاءها بمرجعية هذا المتغير. ففي المثال الذي لديك هي متواجدة في الذاكرة ولا يشير اليها أي متغير وبطبيعة الحال فإنه لن يمكنك انشاء اشارة اليها. ولذلك فإن الحل الأول هو انشاء مرجع، او بمعنى آخر تخزين الخرج في متغير وتمريره كمعامل للوظيفة end. كحل آخر، يمكنك تجاهل هذا الإشعار والتغاضي عما يخرجه مباشرة ويكون ذلك عن طريق استخدام عامل التجاهل: $file_name = @end(explode('/', $file_path)); 1 اقتباس
1 محمد أبو عواد نشر 14 أبريل 2022 أرسل تقرير نشر 14 أبريل 2022 سبب الخطأ: لو لاحظ رسالة الخطأ فهي أنه يجب تمرير المتغيرات فقط من خلال المرجع , وبناء على ذلك يمكنك اسناد قيمة explode الى متغير ليكن اسمه $tmp=explode('/', $file_path) ثم تمرير المتغير الى end كالتالي $file_name = end($tmp); النتيجة image.png 1 اقتباس
السؤال
Emad Saif
أحاول الحصول على اسم الملف من المسار الخاص به بالشكل التالي:
لكن يظهر الخطأ التالي:
ما سبب هذا الخطأ؟ وكيف أقوم بإصلاح هذه المشكلة؟
2 أجوبة على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.