用php在内部数组中搜索值

用php在内部数组中搜索值,php,arrays,json,Php,Arrays,Json,我从数据库中获取数据集,如 Array ( [0] => Array ( [picID] => 175 [owner] => xxx@xxx.com [likedname] => test name [likedUriTN] => g1.jpg [date] => 2013-05-11 09:16:17 ) [1] => Array (

我从数据库中获取数据集,如

Array (
    [0] => Array (
        [picID] => 175
        [owner] => xxx@xxx.com
        [likedname] => test name
        [likedUriTN] => g1.jpg
        [date] => 2013-05-11 09:16:17
    )
    [1] => Array (
        [picID] => 179
        [owner] => xxx@xxx
        [likedname] => Paul
        [likedUriTN] => g2.jpg
        [date] => 2013-05-11 09:04:58
    )
    [2] => Array (
        [picID] => 173
        [owner] => xxx@xxx
        [likedname] => Joseph
        [likedUriTN] => j.jpg
        [date] => 2013-05-09 19:44:58
    )
    [3] => Array (
        [picID] => 175
        [owner] => xxx@xxx
        [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" : "xxx@xxx",
    **"likedname" : [{
        "0" : "test name",
        "1" : David
    }],
    "date" : "2013-05-11 09:16:17"
}, {
    "picID" : "179",
    ...
}]
我搜索了关于数组的php,但还没有任何线索


这是解决办法

我接受了安托克斯的建议。谢谢你,安托克斯

    $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);
您可以这样做:

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不会插入两次