我想删除数组的特定值。这是我的代码:
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 ?
答案 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