php codeigniter数组未定义的偏移量错误

时间:2015-06-08 10:40:29

标签: php arrays codeigniter offset

我正在使用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等等

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

这是错误消息:

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

4 个答案:

答案 0 :(得分:1)

删除。从此行中删除$s数组索引

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

答案 1 :(得分:1)

你在做一些奇怪的事情:

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

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

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

答案 2 :(得分:1)

您希望用逗号分隔字符串并将文件名存储在新数组中?即。将"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],错误将停止。

答案 3 :(得分:1)

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

 *(volatile char*)(0x3FFFFF) = 1;

DEMO