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

数组里的iduser是当前登录账号会保存的iduser,然后根据当前登录账号的iduser删除整个元素,比如登录的iduser是636,就删除下标1的元素,如果是686就... 数组里的iduser是当前登录账号会保存的iduser,然后根据当前登录账号的iduser删除整个元素,比如登录的iduser是636,就删除下标1的元素,如果是686就删除下标0的元素,这个怎么写!! 展开
 我来答
社南清妙0f7
2019-01-25 · TA获得超过647个赞
知道小有建树答主
回答量:449
采纳率:85%
帮助的人:117万
展开全部
<?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));
?>

匿名用户
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]);

?>
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式