当我运行下面的代码时,我得到" undefinied offset 4
" (或5)行中的错误:
if ($photo_type == '10') $ifile = $img[4]; else $ifile = $img[5];
然而,
echo "$img[4]<br />$img[5]";
同时显示 - $img[4]
和$img[5]
。为什么我得到&#34;未定义的偏移&#34;错误?
$imagedata = explode("|", $images);
$num_images = count($imagedata);
foreach($imagedata as $image) {
$img = explode(":", $image);
if ($photo_type == '10') $ifile = $img[4]; else $ifile = $img[5];
echo "$img[4]<br />$img[5]";
}
print_r($img);
Array ( [0] => 6403 [1] => 2 [2] => 1 [3] => c [4] => file1.jpg )
我不能使用&#34; list&#34;因为有时会有第5个值,有时则没有。当第5个值不存在时,我得到&#34;未定义的偏移&#34;再次出错。
答案 0 :(得分:0)
echo "$img[4]<br />$img[5]";
Works,因为它将[4]
作为文本读取,而不是作为变量的一部分。相反,您应该使用花括号来封装变量:
echo "{$img[4]}<br />{$img[5]}";
然后,它不会起作用。
偏移量4和5不存在意味着explode
的输出不是具有5-6个成员的数组,而是更少。您可以var_dump($image, $img);
查看正在进行的操作。
答案 1 :(得分:0)
只需更改为:
if ($photo_type == '10') $ifile = $img[4]; else $ifile = $img[5];
if (!isset($img[4])) {
echo 'there is no index 4 in';
print_r($img);
} elseif (!isset($img[5])) {
echo 'there is no index 5 in';
print_r($img);
} else {
echo "$img[4]<br />$img[5]";
}