求教php二维数组根据某一元素删除

数组里的iduser是当前登录账号会保存的iduser,然后根据当前登录账号的iduser删除整个元素,比如登录的iduser是636,就删除下标1的元素,如果是686就删除下标0的元素,这个怎么写!!

<?php 
$arr=array(
    2 => array(
        'catid' => 2,
        'catdir' => 'notice',
    ),
    5 => array(
        'catid' => 5,
        'catdir' => 'subject',
    ),
    6=> array(
        'catid' => 6,
        'catdir' => 'news'
    )
);
function findVal($arr,$dir){
    foreach($arr as $key=>$val){
    if(in_array($dir,$val))
        return $key;
    }
}
function array_remove_by_key($arr, $key){
        if(!array_key_exists($key, $arr)){
            return $arr;
        }
        $keys = array_keys($arr);
        $index = array_search($key, $keys);
        if($index !== FALSE){
            array_splice($arr, $index, 1);
        }

        return $arr;
    }
$keyz = findVal($arr,'subject');
print_r(array_remove_by_key($arr,$keyz));
?>

温馨提示:答案为网友推荐,仅供参考
第1个回答  2019-01-25

有以下几种方法:

1、在保存生成数组时,以iduser为键值,这样在需要根据iduser删除元素就很方便了。(推荐)

<?php
$array = array(
686=>array(
'iduser'=>686,
'fensuo_name'=>'北京',
'user_realname'=>'郑艳',
),
636=>array(
'iduser'=>636,
'fensuo_name'=>'北京',
'fensuo_name'=>'万宝刚',
),
636=>array(
'iduser'=>19,
'fensuo_name'=>'武汉',
'fensuo_name'=>'万晓丹',
),
);
$iduser = 636;
if(isset($array[$iduser])) unset($array[$iduser]);

?>

2、循环该数组,在循环里判断iduser是否相等,如果就删除该元素。

<?php
$array = array(
0=>array(
'iduser'=>686,
'fensuo_name'=>'北京',
'user_realname'=>'郑艳',
),
1=>array(
'iduser'=>636,
'fensuo_name'=>'北京',
'fensuo_name'=>'万宝刚',
),
2=>array(
'iduser'=>19,
'fensuo_name'=>'武汉',
'fensuo_name'=>'万晓丹',
),
);
$iduser = 636;

foreach($array as $key => $val){
if($key==$iduser) unset($array[$key]);
}

?>

3、先处理数组,将数组处理为以iduser为数组的键值,再根据key=iduser删除对应的元素。

<?php
$array = array(
0=>array(
'iduser'=>686,
'fensuo_name'=>'北京',
'user_realname'=>'郑艳',
),
1=>array(
'iduser'=>636,
'fensuo_name'=>'北京',
'fensuo_name'=>'万宝刚',
),
2=>array(
'iduser'=>19,
'fensuo_name'=>'武汉',
'fensuo_name'=>'万晓丹',
),
);
$iduser = 636;
$array_temp = null;
foreach($array as $key => $val){
$array_temp[$val['iduser']] = $val;
}
$array = $array_temp;
if(isset($array[$iduser])) unset($array[$iduser]);

?>

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网