خطأ غير محدد في PHP PHP
سؤال
أتلقى الخطأ التالي في PHP
لاحظ إزاحة غير محددة 1: في C: wamp www تتضمن imdbgrabber.php سطر 36
هنا هو رمز PHP الذي يسبب ذلك:
<?php
# ...
function get_match($regex, $content)
{
preg_match($regex,$content,$matches);
return $matches[1]; // ERROR HAPPENS HERE
}
ماذا يعني الخطأ؟
المحلول
لو preg_match
لم يجد مباراة ، $matches
هي صفيف فارغ. لذلك يجب عليك التحقق إذا preg_match
وجدت مباراة قبل الوصول إليها $matches[0]
, ، علي سبيل المثال:
function get_match($regex,$content)
{
if (preg_match($regex,$content,$matches)) {
return $matches[0];
} else {
return null;
}
}
نصائح أخرى
كيفية إعادة إنتاج هذا الخطأ في PHP:
قم بإنشاء صفيف فارغ واطلب القيمة التي تم إعطاؤها مفتاحًا مثل هذا:
php> $foobar = array();
php> echo gettype($foobar);
array
php> echo $foobar[0];
PHP Notice: Undefined offset: 0 in
/usr/local/lib/python2.7/dist-packages/phpsh/phpsh.php(578) :
eval()'d code on line 1
ماذا حدث؟
لقد طلبت صفيفًا لإعطائك القيمة الممنوحة لمفتاح لا يحتوي عليه. سوف يمنحك القيمة الفارغة ثم وضع الخطأ أعلاه في lerrovlog.
بحثت عن مفتاحك في الصفيف ، ووجد undefined
.
كيف تجعل الخطأ لا يحدث؟
اسأل عما إذا كان المفتاح موجودًا أولاً قبل أن تذهب لتسأل عن قيمته.
php> echo array_key_exists(0, $foobar) == false;
1
في حالة وجود المفتاح ، احصل على القيمة ، إذا لم تكن موجودة ، فلا داعي للاستعلام عن قيمته.
خطأ غير محدد في PHP يشبه 'ArrayIndExoutofBoundException " في جافا.
مثال:
<?php
$arr=array('Hello','world');//(0=>Hello,1=>world)
echo $arr[2];
?>
خطأ: إزاحة غير محددة 2
هذا يعني أنك تشير إلى مفتاح صفيف غير موجود. يشير "Offset" إلى مفتاح INTEGER للمجموعة الرقمية ، ويشير "الفهرس" إلى مفتاح سلسلة الصفيف الترابطي.
التعويض غير المحدد يعني أن هناك مفتاح صفيف فارغ على سبيل المثال:
$a = array('Felix','Jon','Java');
// This will result in an "Undefined offset" because the size of the array
// is three (3), thus, 0,1,2 without 3
echo $a[3];
يمكنك حل المشكلة باستخدام حلقة (بينما):
$i = 0;
while ($row = mysqli_fetch_assoc($result)) {
// Increase count by 1, thus, $i=1
$i++;
$groupname[$i] = base64_decode(base64_decode($row['groupname']));
// Set the first position of the array to null or empty
$groupname[0] = "";
}