我对 if 条件中语句的含义及其目的有疑问。我在下面发布了完整的 PHP 代码。这是我目前正在研究的另一个人的代码,我的问题是关于特定的代码行(请参阅我的问题的下一段)。<?php $dir = '../assets/videos/'; if(is_dir($dir)) { $filesread = array(); $dh = opendir($dir); print_r($filesread); while(($file = readdir($dh)) !== false) { if($file != '.' && $file != '..') { //returns all file names wihout extension $withoutExt = preg_replace('/\\.[^.\\s]{3,4}$/', '', $file); if($filesread[$withoutExt] !== true) { $hasSQL = false; foreach($films as $f) { if($f['file_name'] == $withoutExt) { echo ' <div class="row"> <div class="col-xs-8"> <a href="'.$dir.$f['file_name'].'.mp4" target="_blank">'.$withoutExt.'</a> </div>在这个 php 代码中,我不太确定该语句是什么if($filesread[$withoutExt] !== true)意思。 if($filesread[$withoutExt] !== true) {//code to be excute}我不知道是什么$filesread[$withoutExt]。我所知道的是$filesread = array();并且$withoutExt是不带扩展名的文件名。我的猜测是程序员试图使用$withoutExt 作为从$filesread数组中获取值的键,但 $filesread是一个空数组。他如何从空数组中获取值?有谁理解$filesread[$withoutExt]这个 if 语句的含义和目的?非常感谢!
1 回答
HUX布斯
TA贡献1876条经验 获得超6个赞
$filesread
是一个包含文件名的数组,没有扩展名作为键。对于一个假设已经列出的项目,其标志为 true。分配发生在输出之后:
$filesread[$withoutExt] = true;
我的猜测是可能有多个文件名包含不同的扩展名。也许每部电影的字幕或缩略图文件。而且您不想多次列出它们。
因此检查:
$filesread[$withoutExt] !== true
对于无扩展键,数组不包含 true 值。
然而,表达式在这里可以很容易地写成:
!isset($filesread[$withoutExt])
但由于这是代码的摘录,因此该数组可能包含在其他地方分配的其他值。
在第一次运行时,数组键将不存在,因此在检查值为 true 时可能会触发警告,因此您可能应该换成更明确的:
!isset($filesread[$withoutExt]) && ($filesread[$withoutExt] !== true)
- 1 回答
- 0 关注
- 102 浏览
添加回答
举报
0/150
提交
取消