2013-05-12 65 views
0

我得到的数据从DB中设置类似搜索值

Array (
    [0] => Array (
     [picID] => 175 
     [owner] => [email protected] 
     [likedname] => test name 
     [likedUriTN] => g1.jpg 
     [date] => 2013-05-11 09:16:17 
    ) 
    [1] => Array (
     [picID] => 179 
     [owner] => [email protected] 
     [likedname] => Paul 
     [likedUriTN] => g2.jpg 
     [date] => 2013-05-11 09:04:58 
    ) 
    [2] => Array (
     [picID] => 173 
     [owner] => [email protected] 
     [likedname] => Joseph 
     [likedUriTN] => j.jpg 
     [date] => 2013-05-09 19:44:58 
    ) 
    [3] => Array (
     [picID] => 175 
     [owner] => [email protected] 
     [likedname] => David 
     [likedUriTN] => g1.jpg 
     [date] => 2013-05-07 14:56:26 
    ) 
) 

这里是我的代码,

if ($result){ 
    $rows = array(); 
    while ($r = mysql_fetch_assoc($result)) { 
     $rows[] = array('picID'=>$r['picID'], 
         'owner'=>$r['owner'], 
         'likedname'=>$r['likedname'], 
         'likedUriTN'=>$r['likedUriTN'], 
         'date'=>$r['date']);  
    } 
    echo json_encode($rows); 
} 

,但是,我想组由picID,只是在添加likedname阵列

这里是从我的结果,我想要什么

[{ 
    "picID" : "175", 
    "owner" : "[email protected]", 
    **"likedname" : [{ 
     "0" : "test name", 
     "1" : David 
    }], 
    "date" : "2013-05-11 09:16:17" 
}, { 
    "picID" : "179", 
    ... 
}] 

我搜索了php关于数组,但我还没有线索。


这是解决方案。

我用antoox的建议进行了修改。谢谢antoox。

$rows = array(); 
while($r = mysql_fetch_assoc($result)) { 
    if (array_key_exists($r['picID'], $rows)) { 
     $rows[$r['picID']]['likedname'][] = $r['likedname']; 
    } 
    else { 
     $rows[$r['picID']] = array('picID'=>$r['picID'], 
            'owner'=>$r['owner'], 
            'likedname'=>array($r['likedname']), 
            'likedUriTN'=>$r['likedUriTN'], 
            'date'=>$r['date']); 
    } 
} 
echo json_encode($rows); 

回答

0

你可以这样:

if($result){ 
    $rows = array(); 
    $likedEmail = array(); 
    while($r = mysql_fetch_assoc($result)) { 
    if (isset($rows[$r['picId']])) { 
     $rows[$r['picId']]['likedname'][] = $r['likedname']; 
    } 
    else { 
     $rows[$r['picId']] = array(
      'picID'=>$r['picID'], 
      'owner'=>$r['owner'], 
      'likedname'=>array($r['likedname']), 
      'likedUriTN'=>$r['likedUriTN'], 
      'date'=>$r['date'] 
     );  
    } 
    } 
    echo json_encode($rows); 
} 

您与picId存储您的数组作为重点,以确保同一picId未插入两次。