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