【问题标题】:php codeigniter array undefined offset errorphp codeigniter数组未定义偏移错误
【发布时间】:2015-06-08 10:40:29
【问题描述】:

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

【问题讨论】:

    标签: php arrays codeigniter offset


    【解决方案1】:

    你在这里做了一些奇怪的事情:

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

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

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

    【讨论】:

    • 我的意思是 $newGambar[$s] = $newGambar[$s] 。 $barangGambar[$i];它与 $newGambar[$s] .= $barangGambar[$i]; 相同
    • 让我问这个问题,如果我想取一个用逗号分隔的字符串,并将每个字符串输入一个数组并分别插入不同的索引,我做对了吗?
    【解决方案2】:

    您希望用逗号分隔字符串并将文件名存储在新数组中吗? 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 将通过分隔符(在本例中为逗号,)拆分字符串并将每个部分存储在结果数组中。

    至于为什么undefined offset错误:

    在第一个循环期间,$newGamber[0] 等于 null(不存在)。因此,尝试连接到它会返回一个未定义的偏移错误。只有一个值被放入$newGamber[0],错误才会停止。

    【讨论】:

      【解决方案3】:

      删除 .从这一行并从数组索引中删除$s

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

      【讨论】:

      • 我正在尝试在那里插入一个字符串,请再次阅读代码
      【解决方案4】:

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

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

      DEMO

      【讨论】:

      • 如果还有其他可能的字符串而不是将其发布在您的问题中..
      猜你喜欢
      • 2020-02-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多