如何使用php将这两个数组合并为一个?

时间:2015-06-04 07:40:31

标签: php arrays database

我想从数据库中取出数据并存储在不同的数组中,以便我可以为它绘制图形。但是当我取出数据时会出现问题。我只是拿出部分编码。



$query =mysqli_query($con,"select * from appointment WHERE L_Name='$lname' and A_Status='CONFIRMED' and EXTRACT(month FROM A_Date) = '$month' ") or die(mysqli_error()); 
if(mysqli_num_rows($query)>0)
{
echo "<h3 align=center style=font-size:20px;>" .$_POST['month']. "</h3>";
echo "<table width=500 cellpadding=10 border=0 align=center><tr  style='color:#FFF;background-color:#000'><td><div align='center'>Name</td><td align='center'>Total No. of Appointment</td><td align='center'>Details</td></tr>"; 
while($row=mysqli_fetch_assoc($query))
{
	$name=$row['S_Name'];
	if($tempname!=$name)
	{
		
		$sql=mysqli_query($con,"select * from appointment WHERE L_Name='$lname' and A_Status='CONFIRMED' and EXTRACT(month FROM A_Date) = '$month' and S_Name='$name' ") or die(mysqli_error()); 
		
		if(mysqli_num_rows($sql)>0)
		{
				
				$count = mysqli_num_rows($sql);
				$x=array($name);
				$no=array($count);

				echo "<tr bgcolor='#F7D358' width=60><td align=center>".$name."</td><td width=200 align=center>" .$count. "</td>";	
				echo "<td align=center width=80><a href='view_month.php?sname=$name&num=$count&month=$month'><img src='select.jpeg' width='80' height='30'></a></td></tr>";
		
		}
		$tempname=$name;
		
	}
		
        }			

$data = array_combine($x, $no);
print_r($data);
&#13;
&#13;
&#13;

我得到的输出只有1个数据,因为数据库中应该有2个数据。我该如何解决?

当前输出

Array ( [Ken] => 1 )

预期输出

Array ( [Alice] => 2 ),
Array ( [Ken] => 1 )                                                      

3 个答案:

答案 0 :(得分:0)

问题是以下代码行。你应该使用array_push,目前你正在覆盖数组数据

$x=array($name);
$no=array($count);   

你应该改用

$x = array(); //declare below the loop  
$no = array(); //declare below the loop

array_push($x, $name);
array_push($no, $count);   
  

注意:如果第一个参数不是数组,array_push()将发出警告。

这就是为什么我们必须首先将变量声明为数组。

答案 1 :(得分:0)

array_combine 使用一个“keys”数组和一个“values”数组中的元素创建一个数组。

array_merge array_merge()函数将一个或多个数组合并为一个数组。

您可以使用array_merge

而不是: $data = array_combine($x, $no);

使用: $data =array_merge($x, $no);

答案 2 :(得分:0)

这可能会对您有所帮助:

$count = mysqli_num_rows($sql);
$x[]=$name;  /* $x must be an array in your case you are replacing old contents of $x */
$no[]=$count;