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