使用PHP变量搜索数组中的值,然后将其删除

时间:2012-11-15 13:45:16

标签: php arrays

嘿伙计们我试图在数组中搜索一个值,然后删除它。但我正在搜索一个PHP变量,这似乎是问题。所以这就是我到目前为止所做的:

if(isset($_REQUEST['Admin'])){
    $arr = array('HAUGMA1', 'sdasd', 'dasdasda', 'sadasd');
    $key=array_search($_REQUEST['Admin'],$arr);
    if($key!==false) 
        unset($arr[$key]);
    print_r($arr);
}

$_REQUEST检索值HAUGMA1但是当我打印出数组时,它没有从中移除HAUGMA1。我究竟做错了什么?当我使用它时:

$key=array_search('HAUGMA1',$arr); 

它正在发挥作用。

4 个答案:

答案 0 :(得分:1)

我认为问题与来自$_REQUEST变量的价值有关 我做了以下测试以显示两个问题:

//Array definition
$arr = array('HAUGMA1', 'sdasd', 'dasdasda', 'sadasd');
//Search
$admin = 'dasdasda';

/* First sample */

$time = microtime();

$arr = array_filter($arr, function($key) use($admin) {
    return $key != $admin;
});

print_r($arr);
echo '<br>Execution time: '.(microtime()-$time).'<br>';

/* Second sample */

$time = microtime();

$key = array_search($admin, $arr);
if($key !== false)
    unset($arr[$key]);

print_r($arr);
echo '<br>Execution time: '.(microtime()-$time).'<br>';

首先:使用array_search的速度比array_filter快大约4倍。

第二:您的脚本的方式,该项目从数组中删除没有问题。尝试调试来自变量$_REQUEST

的值

答案 1 :(得分:0)

array_search区分大小写。使用strtoupper和trim以使传入变量符合数组中的值。 trim()将摆脱尾随空格和其他不需要的字符。

if(isset($_REQUEST['Admin'])){
    $arr = array('HAUGMA1', 'SDASD', 'ETC');
    $key = array_search(strtoupper(trim($_REQUEST['Admin'])), $arr);
    if($key !== false){ 
        unset($arr[$key]);
    }
    print_r($arr);
 }

答案 2 :(得分:0)

试试这个(关闭PHP&gt; = 5.3)

$admin = $_REQUEST['Admin'];

$arr = array_filter($arr, function($key) use($admin) {
    return $key != $admin;
});

答案 3 :(得分:0)

当我手动将$_REQUEST['Admin']设置为“HAUGMA1”时,它正在运行。你确定字符串的开头或结尾没有空格吗?

试试这个:

$key = array_search(trim($_REQUEST['Admin']), $arr);