【问题标题】:Array to String conversion troubles数组到字符串的转换麻烦
【发布时间】:2014-06-25 18:27:36
【问题描述】:

所以我正在为我正在从事的项目的这段代码苦苦挣扎。我不明白为什么在使用下面的 Move_uploaded_file 函数时会出现数组到字符串的转换错误,因为我实现了一个 foreach 循环来仅处理数组中的每个单独元素。另请注意,根据 php 的错误处理,该问题专门与 move_uploaded_file 函数有关,而不是与被调用的其他方法有关。

这是相关代码。 (感谢大家的帮助)。

public function relocate () {

    foreach ($this->getFilename() as $name) {
        $validate = $this->validatePhoto($name); 
        $size = $this->getSize($name); 

        if ($validate && $size) {
            if (move_uploaded_file($name, $this->filepath . $this->getFilename())) {
                echo "<p> upload complete </p>"; 
                //rename file, redirect header, etc. 
            } //end if move_uploaded_file
            else {
                echo "<p> something's up. </p>"; 
            }//end else 
        }//end if validate && size
    }//end foreach
}//end relocate method

【问题讨论】:

  • $this-&gt;getFilename() 返回一个数组。您正在循环,为什么还要尝试将数组添加到字符串中? $this-&gt;filepath.$name
  • 你在 foreach 中使用了$this-&gt;getFilename() both(作为一个数组),andmove_uploaded_file 函数中使用了(作为一个字符串)
  • 因为$this-&gt;getFilename() 正在返回一个数组(你首先要迭代的那个),但是你试图假装它不是你的move_uploaded_file() 中的一个数组。 ...为什么不if (move_uploaded_file($name, $this-&gt;filepath . $name)) {
  • 哇,我没有意识到这一点。我在想我的循环方式有问题。我的愚蠢错误,谢谢大家!

标签: php arrays oop foreach upload


【解决方案1】:

你应该用$name替换$this-&gt;getFilename(),如果我没看错,$this-&gt;getFilename()会返回一个数组...

public function relocate () {

    foreach ($this->getFilename() as $name) {
        $validate = $this->validatePhoto($name); 
        $size = $this->getSize($name); 

        if ($validate && $size) {
            if (move_uploaded_file($name, $this->filepath . $name)) {
                echo "<p> upload complete </p>"; 
                //rename file, redirect header, etc. 
            } //end if move_uploaded_file
            else {
                echo "<p> something's up. </p>"; 
            }//end else 
        }//end if validate && size
    }//end foreach
}//end relocate method

【讨论】:

    【解决方案2】:

    应该是

    public function relocate () {
    
        foreach ($this->getFilename() as $name) {
            $validate = $this->validatePhoto($name); 
            $size = $this->getSize($name); 
    
            if ($validate && $size) {
                if (move_uploaded_file($name, $this->filepath . $name)) {
                    echo "<p> upload complete </p>"; 
                    //rename file, redirect header, etc. 
                } //end if move_uploaded_file
                else {
                    echo "<p> something's up. </p>"; 
                }//end else 
            }//end if validate && size
        }//end foreach
    }//end relocate method
    

    您正在将$this-&gt;getFileName() 传递到move_uploaded_file(),而您应该传入$name,因为您已经在迭代$this-&gt;getFileName() 返回的数组

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-04-07
      • 2020-09-16
      • 1970-01-01
      • 1970-01-01
      • 2021-05-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多