[英]Php Array key=> value searching
我對php很新。
我有一個陣列
$ arr = array(0 => array('GID'=> 1,'groupname'=>“cat1”,'members'=> array(0 => array('mid'=> 11,'mname'=> 'wwww'),1 => array('mid'=> 12,'mname'=>'wswww'))),1 => array('GID'=> 2,'groupname'=>“cat2”, '部件'=>數組(0 =>數組( '中'=> 13, 'MNAME'=> 'gggwwww'),1 =>數組( '中'=> 14, 'MNAME'=> 'wvvwww') )),2 => array('GID'=> 3,'groupname'=>“cat1”,'members'=> array(0 => array('mid'=> 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++;
}
以函數的形式,最簡單的解決方案將如下所示:
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等於3,這樣的東西將匹配:
foreach( $arr as $item ) {
if( $item['GID'] == 3 ) {
// matches
}
}
有代碼
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;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.