PHP编码器数组未定义偏移错误


php codeigniter array undefined offset error

我正在使用codeigniter,我正在声明一个变量数组,我使用数组,它工作得很好,但PHP不断显示一些不影响程序的错误。有人知道发生了什么吗??这是我的代码:

视图:

<?php
$banyak = 0;
$id = $results->id;
$barangNama = $results->nama;
$barangHarga = $results->harga;
$barangGambar = $results->gambar; //resulting string "1.jpg,2.jpg,3.jpg,4.jpg"
$s = 0;
//declare variable array
$newGambar = array();
for ($i = 0; $i < strlen($barangGambar); $i++) {
    if ($barangGambar[$i] == ',') {
        $s++;
    } else {
        /* here is line 90 */ $newGambar[$s] .= $barangGambar[$i];
    }
}
print_r($newGambar);
?>
<?php
$w = 0;
for ($i = 0; $i <= $s; $i++) {

    if ($w % 4 == 0) {
        $banyak++;
    }
    $w++;
    echo $banyak;
    ?>
    <div class="item <?php if ($i == 0) {
        echo "active";
    } ?>" data-thumb="<?php echo $banyak - 1; ?>">
        <img src="<?php echo base_url(); ?>assets/images/product_picture/<?php echo $newGambar[$i]; ?>">
    </div>
    <?php
}
?>

我想要实现的是$barangGambar每个昏迷,输入到$newGambar[0] = 1.jpg$newGambar[1] = 2.jpg等等

但是我必须循环决定提供了多少张图片

这是错误MSG:

    A PHP Error was encountered
    Severity: Notice
    Message: Undefined offset: 0
   Filename: webView/webProductZoomed.php
   Line Number: 90

你做了一些奇怪的事情:

$newGambar[$s] .= $barangGambar[$i];

也许你的意思是:$newGambar[] = $barangGambar[$i]; ?

这里不需要计数器,因为添加到数组中的每个元素都会自动获得一个自增的索引,所以您最终仍然会得到$newGambar => array (0 => 'element1', 1 => 'element2')

您希望用逗号分隔字符串并将文件名存储在新数组中?ie。把"1.jpg,2.jpg,3.jpg,4.jpg"变成array("1.jpg","2.jpg","3.jpg","4.jpg") ?

替换:

for ($i = 0; $i < strlen($barangGambar); $i++) {
    if ($barangGambar[$i] == ',') {
        $s++;
    } else {
        /* here is line 90 */ $newGambar[$s] .= $barangGambar[$i];
    }
}

:

$newGambar = explode(',',$barangGambar);

explode将用分隔符(在本例中为逗号,)分隔字符串,并将每个部分存储在生成的数组中。

关于未定义偏移错误的原因:

在第一个循环中,$newGamber[0]等于null(不存在)。因此,尝试连接到它将返回一个未定义的偏移错误。如果在$newGamber[0]中输入了一个值,错误将停止。

删除。并从数组索引

中删除$s
$newGambar[] = $barangGambar[$i];

我不确定你的问题,但这对你有用

$barangGambar = "1.jpg,2.jpg,3.jpg,4.jpg";
if(!empty($barangGambar)){
    $newGambar = explode(',',$barangGambar);
}
print_r($newGambar);