【问题标题】:Array is filled with blank value even when empty即使为空,数组也充满了空白值
【发布时间】:2020-02-13 17:46:31
【问题描述】:

为什么这个数组没有填充,却是空值?

class URLDynamic {
    private $Parametro;
    private $SepURL;

    private function SetParametro() {
        if ( isset ( $_GET['url'] ) ) {
            $this->Parametro = addslashes ( rtrim ( $_GET['url'] ) );
            $this->SepURL = explode ( "/", $this->Parametro );
        }
    }

    private function SetPages() {
        $this->SetParametro();

        if ( isset ( $this->SepURL[0] ) ) {
            echo $this->SepURL[0];
        } else {
            echo "Home";
        }
    }

var_dump ($this->SepURL);

数组(1) { [0]=> 字符串(0) "" }

它没有落在else

【问题讨论】:

  • 这就是explode的作用,要么使用empty()检查空值,要么尝试this
  • 因为php是一种很奇怪的语言,创建它的人是一个很好的程序员但显然有点心理变态,否则无法描述他是如何设法创建这种不方便的语言
  • @catcon 很好,我只需要array_filter before 它explode

标签: php url


【解决方案1】:

如果分隔符没有出现在字符串的任何位置,explode() 总是返回一个包含整个字符串作为其唯一元素的数组,例如

explode('/', 'foo') returns ["foo"]

在输入字符串为空的情况下,这将是一个包含空字符串的数组。

【讨论】: