如何在PHP中的这种数组情况下正确地循环


how to loop properly in this kind of array situation in PHP?

如何根据这个样本数组的图像数量循环和保存数据?

目标:

  • 根据阵列样本中的图像数量将图像保存在图像表中
  • 后缀为"0"(零)的图像是主图像,应标记为"主图像"

    $postdata = array
        (
        'key' => 'adsfasdf34234234235235c',
        'source' => 1,
        'maincategoryid' => 12,
        'subcategoryid' => 34,
        'userid' => 6,
        'shopid' => 1,
        'status' => 1,
        'description'=> 'blah blah blah',
        'image0' => 'blahbalh'big.jpg',
        'image1' => 'hblahblah'smal1.jpg',
        'image2' => 'flowers.jpg',
        'image3' => 'leaf.jpg'
    );
    

这是我的图像表字段

IMAGEID,USERID,SHOPID,IMAGEPATH,MAINIMAGE,STATUS

表中的预期输入应该是这样的,基于上面的样本

IMAGEID,USERID,SHOPID,     IMAGEPATH         ,MAINIMAGE,STATUS
    1     6     1      blahbalh'big.jpg          1        1    
    2     6     1      hblahblah'smal1.jpg       0        1
    3     6     1      flowers.jpg               0        1
    4     6     1      leaf.jpg                  0        1

正如您所看到的,数组键中第一个后缀为零的图像,是列中有标志的主图像

我尝试使用foreach或for循环进行循环,但我只能从该数组中保存1行数据,而我应该保存4行数据

我试过这个

$mainimage = 0;
for($i=0; $i < count($postdata); $i++){
     if(!isset($postdata['image'.$i])){
          continue;
       }
      $shopmodel->USERID = $postdata['userid'];
      $shopmodel->SHOPID = $postdata['shopid'];
      $shopmodel->IMAGEPATH = $postdata['image'.$i];
      $shopmodel->MAINIMAGE = $mainimage;
      $shopmodel->STATUS = $postdata['status'];
      if($i == 0 ){
           $shopmodel->MAINIMAGE = 1;
      }
      $shopmodel->save();
}

我知道确实有问题,那么如何根据我的样本循环并实现目标呢?

您需要进行调试才能知道出了什么问题。例如进行

var_dump($postdata['image'.$i]);

之前

$shopmodel->USERID = $postdata['userid'];`

所以你会看看你的条件是否良好。

下一步考虑在循环中使用时重置模型:

$model()->unsetAttributes();

并检查它是否在此处或您的代码$shopsmodel VS $shopmodel 中拼写错误

经过几个小时的反复试验,我想出了自己的解决方案来解决这个问题这是我的解决方案

$ismain = 0;
$images = array();
        for($i=0; $i < count($postdata); $i++){
            if(!isset($postdata['image'.$i])){
                continue;
            }
            array_push($images, $postdata['image'.$i]);
        }
        foreach($images as $key => $image){
            if($key == 0){
                $ismain = 1;
            } else {
                $ismain = 0;
            }
            echo "adid = ". $postdata['shopid']. "; ismain =" .$ismain."; image =". $image."<br/>";
        }

自我注意:在实际(真实)的应用程序代码中,我在foreach循环中实例化了模型,并初始化了相应的属性。。然后调用模型的save()函数。。和繁荣。。我想要的输出出现了。。谢谢所有试图帮助我的人……但最终。。我用自己的方式帮助自己。欢呼