strtolower()期望参数1是字符串,即使它绝对是一个字符串,也会给出数组

时间:2018-06-07 10:50:58

标签: php yii2

public function getImages( $images )
{
    $ids = [];
    //\Kint::dump( $images['file'][0]['name'] );
    foreach( $images['file'] as $image ){


        $url = $image['url'];
        $name = $image['name'];


        if( strpos( strtolower( $name ) , 'jpg') !== false ){
            $assets = Asset::Find()
                ->filename( $name )
                ->all();
            if( count( $assets ) == 0 ){
                $ids [] = $this->createAssetFromUrl( $name, $url );
            }else{
                $ids [] = $assets[0]->id;
            }
        }

    }
    return $ids;
}

您好我正在使用这段代码从数组中获取图像名称以确定它是否已经下载但是我一直收到此错误

PHP Warning – yii\base\ErrorException
strtolower() expects parameter 1 to be string, array given
1. in /Applications/XAMPP/xamppfiles/htdocs/vebraaltowrapper/src/services/VebraAltoWrapperService.php at line 441
    //\Kint::dump( $images['file'][0]['name'] );
    foreach( $images['file'] as $image ){


        $url = $image['url'];
        $name = $image['name'];

        //\Kint::dump( strpos( strtolower( $name ) , 'jpg') );

        if( strpos( strtolower( $name ) , 'jpg') !== false ){
            $assets = Asset::Find()
                ->filename( $name )
                ->all();
            if( count( $assets ) == 0 ){
                $ids [] = $this->createAssetFromUrl( $name, $url );
            }else{
                $ids [] = $assets[0]->id;
            }
        }

错误说$ name是一个数组但是如果我转储$ name它会清楚地显示它的字符串

$name string (12) "IMG_0693.JPG"

所以我虽然可能是strpos()或strtolower()导致问题但是如果我在if语句中转储完整条件就像这样 \Kint::dump( strpos( strtolower( $name ) , 'jpg') );   看起来很好,并且正好回归了我所期待的

strpos(...) integer 9

因此只有在if语句中放入该条件时才会出现错误,我是否遗漏了明显的内容,或者这是php中的错误?

0 个答案:

没有答案