删除数组的特定值

时间:2014-08-19 05:54:14

标签: php

我想删除数组的特定值。这是我的代码:

HTML

<form action="" method="post">
<input type="text" name="user">
<input type="submit" value="Watch">
</form>

PHP

$user='';

if ( isset ( $_POST['user'] ) ) { $user = $_POST['user']; }

$dir = "images/".$user.'/';

$dh = opendir ( $dir );

while ( false !== ($filename = readdir( $dh ) ) ) {
    $files[] = $filename; 
}

$files = array_diff ( $files, array('.','..') );

$e = count($files);

for ( $i=0; $i<$e; $i++ ) { echo $files[$i]; }

输出

user/.
user/..
user/HTML.txt
user/CSS.txt
user/JavaScript.txt

我尝试array_diff()删除'.''..'

我注意到最近的WAMP值为0的偏移量。

以及如何将版本改为 版本循环使用 opendir readdir

3 个答案:

答案 0 :(得分:1)

用户如果..和条件不需要使用array_diff

while ( false !== ($filename = readdir( $dh ) ) ) {
    if($filename != '.' && $filename != '..') {
        $files[] = $filename; 
    }
}

答案 1 :(得分:1)

建议TBI回答您的具体情况;从来没有把它放在数组中是有道理的。但是,要匹配问题的标题,要从数组中删除元素,您应该使用unset

foreach($files as $key => $file){
    if($file == '.' || $file =='..'){
        unset($key);
    }
}

答案 2 :(得分:0)

您可以使用if()条件,例如 -

while ( false !== ($filename = readdir( $dh ) ) ) {
    if($filename != '.' || $filename != '..') {
        $files[] = $filename; 
    }
}

现在,您不需要使用array_diff