嗨,我有以下数组
$langarr[0][0] = gb
$langarr[0][1] = 1
$langarr[1][0] = de
$langarr[1][1] = 2
$langarr[2][0] = fr
$langarr[2][1] = 3
$langarr[3][0] = it
$langarr[3][1] = 5
现在我想搜索未设置的
if(($keyy = array_search('de', $langarr[][0])) !== false) {
unset($langarr[$keyy]);
}
所以我想搜索langarr[any][0]
,如果匹配,我想删除整个数据集,如unset($langarr[X]);
如何实现这一目标?
答案 0 :(得分:1)
$langarr = array();
$langarr[0][0] = "gb";
$langarr[0][1] = "1";
$langarr[1][0] = "de";
$langarr[1][1] = "2";
$langarr[2][0] = "fr";
$langarr[2][1] = "3";
$langarr[3][0] = "it";
$langarr[3][1] = "5";
//获取搜索数组的密钥
$value = recursive_array_search("de",$langarr);
//打印密钥
print_r($value);
//取消设置数组" de"其中有关键" 1"
unset($langarr[$value]);
//打印结果数组
的print_r($ langarr);
function recursive_array_search($needle,$haystack) {
foreach($haystack as $key=>$value) {
$current_key=$key;
if($needle===$value OR (is_array($value) && recursive_array_search($needle,$value) !== false)) {
return $current_key;
}
}
return false;
}
答案 1 :(得分:1)
使用array_filter()
。它需要一个(匿名)函数作为第二个参数。函数本身接收一个数组元素作为其参数。如果该函数返回false
,则从数组中删除数组元素。
所以以你的例子为例,如果$needle
是'de',则删除子阵列。
$langarr = array(
array('gb', 1),
array('de', 2),
);
$needle = 'de';
$langarr = array_filter($langarr, function($row) use($needle) {
return ($row[0] != $needle);
});
答案 2 :(得分:1)
<?php
$langarr[0][0] = "gb";
$langarr[0][1] = 1;
$langarr[1][0] = "de";
$langarr[1][1] = 2;
$langarr[2][0] = "fr";
$langarr[2][1] = 3;
$langarr[4][0] = "it";
$langarr[4][1] = 4;
print_r($langarr);
foreach($langarr as $key=>$data){
if($data[0]=='de'){
unset($langarr[$key]);
}
}
print_r($langarr);
?>