数组里的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));
?>
$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]);
?>