如何在php中将多个字段序列化为一个变量

时间:2017-07-11 06:00:16

标签: php html mysql

我将两个字段作为数组图像及其颜色,HTML为:

<div class="form-group">
    <input type="file" name="images[source][]" class="form-control input-lg">
    <input type="text" name="images[color][]" class="form-control input-lg">
</div>

PHP就是

$images=array();
if(isset($_FILES['images']) && sizeof($_FILES['images']['source']) > 0)
{
    foreach($_FILES['images']['source'] as $index=>$source)
    {
        if(!empty($source) && !empty($_POST['images']['color'][$index]))
        {
            $images[]=array('source'=>$source,'color'=>$_POST['images']['color'][$index]);
        }
    }
    if(sizeof($images) > 0)
    {
        $data['images']=$N['images']=serialize($images);
    }

}

但是当点击提交按钮时,图像源没有任何结果,但图像颜色显示... 任何帮助都将是值得赞赏的。

3 个答案:

答案 0 :(得分:0)

试试这个:您使用$ source作为变量,而我看不到它被声明在任何地方。我改变了它。

$images=array();
if(isset($_FILES['images']) && sizeof($_FILES['images']['source']) > 0)
{
    foreach($_FILES['images']['source'] as $index=>$source)
    {
        if(!empty($_POST['images']['source'][$index]) && !empty($_POST['images']['color'][$index]))
        {
            $images[]=array('source'=>$_POST['images']['source'][$index],'color'=>$_POST['images']['color'][$index]);
        }
    }
    if(sizeof($images) > 0)
    {
        $data['images']=$N['images']=serialize($images);
    }

}

答案 1 :(得分:0)

嘿伙计你错过了$_FILES对象中的名字键。你也需要检查一下。这是更新的代码。

<?php 
$images=array();
if(isset($_FILES['images']) && sizeof($_FILES['images']['name']['source']) > 0) 
    // name is present before source, you need to add that part
{
    foreach($_FILES['images']['name']['source'] as $index=>$source)
    {
        if(!empty($source) && !empty($_POST['images']['color'][$index]))
        {
            $images[]=array('source'=>$source,'color'=>$_POST['images']['color'][$index]);
        }
    }
    if(sizeof($images) > 0)
    {
        $data['images']=$N['images']=serialize($images);
    }
} ?>

希望这有帮助!

答案 2 :(得分:0)

感谢您的帮助,我的代码正在使用 HTML:

<input type="file" name="images[]"> <input type="text" name="color[]">

PHP:

$array_serialize = array();
        if (!empty($_FILES['image'])){
            $files = $_FILES['image'];
            $images = $files['name'];
            foreach($images as $index=>$image)
            {
                if(!empty($image) && !empty($_POST['color'][$index]))
                {
                    $array_serialize[]=array('image'=>$image,'color'=>$_POST['color'][$index]);
                }
            }
            $N['images'] = serialize($array_serialize);
        }