将两个不同的数组合并为一个是动态的&其他是静态的

时间:2015-01-02 07:32:09

标签: php arrays

我想在一个数组中合并三个不同的数组,其中$array2是动态的,而其他数组是静态的。我如何获得所有合并数组的输出,但是使用$array2多个条目和其他单个数据。

我有两个问题:

1)如果我在while之后(在其他数组之前)关闭$arrary2循环,我只会获得$array2的最后一个条目...并非所有

2)主要是:如果我在while之后关闭$output['data'] = array($result);循环,那么第二个条目将创建一个新数组......但是我希望它在一个数组中。任何帮助将不胜感激。

以下是我的代码的一部分:

<?php
if(mysql_num_rows($result) == 1) {       

    $q2="select `image_kit_id` from `user_transaction` where `user_id`='$col'";

    $r2=mysql_query($q2);

    if($r2) {
        $count=0;
        while($ids=mysql_fetch_array($r2)) {
            $image_kit_id=$ids['image_kit_id'];
            //echo $image_kit_id;
            $q3="select * from `images` where `image_kit_id` = '$image_kit_id'";
            $r3=mysql_query($q3);
            $data=array();
            $i=0;

            while($row1 = mysql_fetch_array($r3)) {
                $arr = array(
                             'imageid' => $row1['image_id'],

                             );
                $data[$i] = $arr;
                $i++;
            }
            $array2 = array($data);
            $count++;

            $array1 = array('user_id'=>$col);

            $array3 = array($data1);
            $array4 = array($data2);
            $array5 = array($data3);

            $result = array_merge($array1, $array2 ,$array3, $array4 ,$array5);

            $output['data'] = array($result);
        }
        ?>

1 个答案:

答案 0 :(得分:1)

代码中存在逻辑错误。根据我的理解,我已经在下面纠正了这一点。告诉我它的工作情况或其他你想要的东西。

 $count=0; //here is no use of this, may be you need for counting
 $array2=array();

 while($ids=mysql_fetch_array($r2)) {
     $image_kit_id=$ids['image_kit_id'];

     $q3="select * from `images` where `image_kit_id` = '$image_kit_id'";
     $r3=mysql_query($q3);
     $data=array();

     while($row1 = mysql_fetch_array($r3)) {
         $arr = array('imageid' => $row1['image_id']);
         $data[] = $arr;
     }
     $array2[] = $data;
     $count++;
 }
 $array1 = array('user_id'=>$col);
 $array3 = array($data1);
 $array4 = array($data2);
 $array5 = array($data3);
 $result = array_merge($array1, $array2 ,$array3, $array4 ,$array5);
 $output['data'] = array($result);

还有一些逻辑不清楚,可能你需要那种$output,所以在这里只提一下我的观点:

1)您可以直接将$result存储在$ouput['data']=$result;中,因为$result是一个数组。你把它放在另一个数组array($result)

中是多维的

2)$array2中的相同逻辑,您可以直接将$row1['image_id']存储在$data[]中,因为$array2仅存储图片ID ,所以你不需要关联数组来告诉它imageid

3)所有其他阵列都是一样的。

如果您的输出格式不具体,那么我建议:

 $array2=array();
 while($ids=mysql_fetch_array($r2)) {
     $image_kit_id=$ids['image_kit_id'];

     $q3="select * from `images` where `image_kit_id` = '$image_kit_id'";
     $r3=mysql_query($q3);
     $data=array();

     while($row1 = mysql_fetch_array($r3)) {
         $data[] = $row1['image_id'];
     }
     $array2[] = $data;
 }

 $output['data'] = array('user_id'=>$col, 'imageids'=>$array2, $data1, $data2, $data3);
   // first two element will have specified key(index), And last three's keys will be `0, 1 & 2` OR you can specify as you need OR remove the keys for first two also then keys will be `0, 1, 2, 3 & 4`.
 //OR remove the ['data'] also
 $ouput=array('user_id'=>$col, 'imageids'=>$array2, 'data1'=>$data1, 'data2'=>$data2, 'data3'=>$data3);