使用非严格标准从 PHP 中删除多个元素


Delete multiple element from PHP with non strict criterias

我有一个从readdir函数创建的数组,假设像这样说:

$array = array("file1.txt","file2.txt","file3.txt","~file1.txt","~file3.txt")

我不知道具有~字符的文件的确切名称。我想排除所有具有~的值,因此数组应该是:

$array = array("file1.txt","file2.txt","file3.txt")

你能告诉我,我如何在PHP中做到这一点吗?

使用 array_filter()

$array = array_filter($array, function($var){
    return strpos($var, '~') === false;
});
print_r($array);

或者对于 PHP 5.3 <:

function filter($var){
    return strpos($var, '~') === false;
}
$array = array_filter($array, 'filter');

你也可以选择foreach

$res = array();
foreach($array as $v){
    if ($v[0] != '~'){
        $res[] = $v;
    }
}

但我会坚持array_filter

for($count=0; $count<=count($array); $count++)
{
    //echo $array[$count];
    if(strpos($array[$count],'~')!==false)
        unset($array[$count]);      
}
$array=array_values($array);