2014-06-19 19 views
1

我有一些代码(如下),它获取两个数组,一个用逗号分隔的声明产品的用户列表和一个对应的逗号分隔时间列表。然后,它将user_id与users表匹配,并获取多个数组中的用户信息。我想将相应的claims_time附加到每个输出数组中,但无法弄清楚如何去做。添加密钥到多个数组并填充该密钥的值,以便与来自另一个有序数组的对应值相关联

$q = "SELECT claimed_by, claimed_time FROM post WHERE post_id='$post_id' AND accepted_user='' AND user_id='$id'"; 
    $r = mysqli_query ($dbc, $q) or trigger_error("Query: $q\n<br />MySQL Error: " . mysqli_error($dbc)); 

    if (mysqli_num_rows($r) == 1) { 
       $postrow = mysqli_fetch_array($r,MYSQLI_ASSOC); 
       $arr = explode(',', $postrow['claimed_by']); 
       $arr2 = explode(',', $postrow['claimed_time']); 

$users = array(); 
$r = mysqli_query($dbc,"SELECT * FROM users 
WHERE id in (".implode(',',$arr).")"); 
$count=0; 
while($row = $r->fetch_assoc()){ 
    $multiple_row_result[] = $row; 
} 


echo json_encode($multiple_row_result);//result 

我试图把下面进入while循环,但没有成功:

$multiple_row_result['claimed_time']=$arr2 

我想沿着foreach语句可能会工作线的东西,但不能得到任何工作。

谢谢。

回答

1

如果重构了表结构,那么执行此操作会更容易。

但在当前的格式,你可以不喜欢

while($row = $r->fetch_assoc()){ 

    //get the key from the id array - $arr 
    $key = array_search($row['id'], $arr); 

    //get the claimed_time for the id using the $key and add to $row 
    $row['claimed_time'] = $arr2[$key]; 

    $multiple_row_result[] = $row; 
} 
+0

工作就像一个魅力。我从来没有使用过array_search,但我很高兴我知道它现在存在。肯定会派上用场。谢谢! – user3745602

+1

很高兴帮助。在php中有很多有价值的内置函数,你可以通过搜索文档来使用 - 即。 ['array_search()' - http://www.php.net//manual/en/function.array-search.php](http://www.php.net//manual/en/function.array- search.php中) – Sean

相关问题