我想在一个数组中合并三个不同的数组,其中$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);
}
?>
答案 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);