如何根据这个样本数组的图像数量循环和保存数据?
目标:
- 根据阵列样本中的图像数量将图像保存在图像表中
-
后缀为"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()函数。。和繁荣。。我想要的输出出现了。。谢谢所有试图帮助我的人……但最终。。我用自己的方式帮助自己。欢呼