具有不同金额的PHP数组(未定义的偏移量)

时间:2017-01-18 11:20:51

标签: php arrays

我有两个数组,一个可以有1个元素,其他数组可以有2个元素。所以主要的问题是我得到了“Undefined offset”错误我认为它是因为我的数组元素不同,file_data循环变为两次而其他只有单个元素一起出现,为什么我得到这个错误。我该如何解决这个问题?

第一个数组是字幕变量

none

我的第二个数组是file_data

array (size=1)
  0 => string 'Some string' (length=9)

array (size=2)
  'userfile_1' => string './uploads/images/131/Untitled.jpg' (length=33)
  'userfile_15' => string './uploads/images/131/unnamed.jpg' (length=32)

在我的结果中我得到了

$i = 0;

foreach ($file_data as $file)
{
    $image['hotel_id'] = $last_id;
    $image['image']    = $file;
    $image['caption']  = $caption[$i++];

    var_dump($image);
}

3 个答案:

答案 0 :(得分:1)

由于此

,您收到未定义的偏移量错误
$image['caption']  = $caption[$i++];

避免错误:

if(!empty($caption[$i])){
   $image['caption']  = $caption[$i];
} else {
   $image['caption']  = "";
}
$i++;

答案 1 :(得分:0)

可能更正确吗?

foreach ($file_data as $file)
{
    $image[] =['hotel_id' => $last_id,
               'image'    => $file,
               'caption'  => $caption];
}
var_dump($image);

或替换行:

$image['caption']  = isset($caption[$i++])?$caption[$i++]:"";

答案 2 :(得分:0)

$i = 0;

foreach ($file_data as $file)
{
    $image['hotel_id'] = $last_id;
    $image['image']    = $file;
    if($caption[$i++]!='')
        $image['caption']  = $caption[$i++];
    else
        $image['caption']  = '';

    var_dump($image);
}