2012-12-04 42 views
3

HI我对PHP相当陌生。Php Array key =>值搜索

我有一个数组

$ ARR =阵列(0 =>数组( 'GID'=> 1, '组名'=> “CAT1”, '成员'=>数组(0 =>数组( '''')), 1 => array('GID'=> 11,'mname'=>'wwww'),1 => array('mid'=> 12,'mname'=>'wswww')) => 2, '组名'=> “CAT2”, '成员'=>数组(0 =>数组( '中'=> 13, 'MNAME'=> 'gggwwww'),1 =>数组( '中' => 14,'mname'=>'wvvwww'))), 2 => array('GID'=> 3,'groupname'=>“cat1”,'members'=> array(0 => array '中'=> 15, 'MNAME'=> 'wwddsww')),1 =>数组( '中'=> 16, 'MNAME'=> 'wwwdddw')));

 ie...,I have GID,groupname,mid(member id),mname(member name).I want to insert a new mid and mname into a group if it is already in the array ,if it is not exists then create a new subarray with these elements..I also need to check a member id(mid) is also present.........................I used the code but its not working fine............. if (!empty($evntGroup)) { 


      foreach ($evntGroup as $k => $group) { 

       if ($group['GID'] == $group_id) { 
        foreach($group as $j=> $mem){ 

        if($mem['mid'] == $mem_id){ 

         unset($evntGroup[$k]['members'][$j]['mid']); 
         unset($evntGroup[$k]['members'][$j]['mname']); 
        } 
        else{ 


        $evntGroup[$k]['members'][] = array(
         'mid' => $mem_id, 
         'mname' => $mem_name); 

        }} 
       } else { 


        $evntGroup[] = array(
         'GID' => $group_id, 
         'groupname' => $Group['event_group_name'], 
         'members' => array(
          0 => array(
           'mid' => $mem_id, 
           'mname' => $mem_name 
          ) 
         ) 
        ); 

       } 

      } 
     } else { 

      $evntGroup[$i]['GID'] = $group_id; 
      $evntGroup[$i]['groupname'] = $Group['event_group_name']; 
      $evntGroup[$i]['members'][] = array(
       'mid' => $mem_id, 
       'mname' => $mem_name); 
      $i++; 

     } 
+0

它的'mid'是在'members'有其自己的ID ...什么你的预期结果就像'GID'=> 1'被修改为 – Baba

回答

2

在函数的形式,最简单的解决方案将是这个样子:

function isGidInArray($arr, $val) { 
    foreach($arr as $cur) { 
     if($cur['GID'] == $val) 
      return true; 
    } 
    return false; 
} 

你更新你的问题来指定要如果指定的GID被发现怎么办,但是这只是一个简单的除循环:

function doSomethingIfGidInArray($arr, $val) { 
    foreach($arr as $cur) { 
     if($cur['GID'] == $val) { 
      doSomething(); 
      break; //Assuming you only expect one instance of the passed value - stop searching after it's found 
     } 
    } 
} 

有不幸的是,这将父阵列内检索每个数组的索引相同没有本地PHP阵列功能。我经常想要这样的事情。如果GID等于

+0

ie ...,我有GID,groupname,mid(成员id),mname(成员名称)。我想插入一个新的mid和mname如果它已经在数组中,如果它不存在,那么创建一个包含这些元素的新子数组..我还需要检查一个成员id(mid)也存在...... ...................我用的代码,但它不能正常工作............. –

1

像这样将匹配3:

foreach($arr as $item) { 
    if($item['GID'] == 3) { 
    // matches 
    } 
} 
1

有代码

function updateByGid(&$array,$gid,$groupname,$mid,$mname) { 
    //For each element of the array 
    foreach ($array as $ii => $elem) { 
     //If GID has the same value 
     if ($elem['GID'] == $gid) { 
      //Insert new member 
      $array[$ii]['members'][]=array(
         'mid'=>$mid, 
         'mname'=>$mname); 
      //Found! 
      return 0; 
     } 
    }  
    //If not found, create new 
    $array[]=array(
      'GID'=>$gid, 
      'groupname'=>$groupname, 
      'members'=>array(
       0=>array(
        'mid'=>$mid, 
        'mname'=>$mname 
       ) 
      ) 
    ); 

    return 0; 
} 
+0

我有GID,groupname,mid(成员id),mname(成员名称)。我想插入一个新的mid和mname到一个组中,如果它已经在数组中,如果它不存在,那么用这些元素创建一个新的子数组 –

+0

和...什么是问题?少了什么东西? – RainHeart257

+0

然后,你想在GID中寻找一个mid和mname,如果你没有找到它,插入一个新的成员?你有你想要使用的GID,还是你必须创建一个新的(如果它不存在)? 我认为解决方案很简单,但我不太了解你 – RainHeart257