在 If 条件下使用 PHP 关联数组

我对 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 语句的含义和目的?非常感谢!


qq_花开花谢_0
浏览 104回答 1
1回答

HUX布斯

$filesread是一个包含文件名的数组,没有扩展名作为键。对于一个假设已经列出的项目,其标志为 true。分配发生在输出之后:$filesread[$withoutExt]&nbsp;=&nbsp;true;我的猜测是可能有多个文件名包含不同的扩展名。也许每部电影的字幕或缩略图文件。而且您不想多次列出它们。因此检查:$filesread[$withoutExt]&nbsp;!==&nbsp;true对于无扩展键,数组不包含 true 值。然而,表达式在这里可以很容易地写成:!isset($filesread[$withoutExt])但由于这是代码的摘录,因此该数组可能包含在其他地方分配的其他值。在第一次运行时,数组键将不存在,因此在检查值为 true 时可能会触发警告,因此您可能应该换成更明确的:!isset($filesread[$withoutExt])&nbsp;&&&nbsp;($filesread[$withoutExt]&nbsp;!==&nbsp;true)
打开App,查看更多内容
随时随地看视频慕课网APP