web-dev-qa-db-ja.com

Laravel] - int型の値の配列オフセットにアクセスしようとしている

データベースに投稿要求を送信しようとすると問題があります。興味深いことは、PHPバージョン7.4.2を使用するときにのみエラーが発生します。 PHPバージョン7.3.9すべてがうまく機能します。私はLaravel 6.17を使っています。

Laravelはこの問題を解決する予定ですか?

エラーが発生したときの私のスタックトレースです。

_Trying to access array offset on value of type int   
in CreateCourseController.php line 176
at HandleExceptions->handleError()
in CreateCourseController.php line 176
at CreateCourseController->createDates()
in CreateCourseController.php line 101
at CreateCourseController->createCourse()
at call_user_func_array()
in Controller.php line 54
at Controller->callAction()
in ControllerDispatcher.php line 45
at ControllerDispatcher->dispatch()
in Route.php line 219
at Route->runController()
in Route.php line 176
at Route->run()
in Router.php line 681
at Router->Illuminate\Routing\{closure}()
in Pipeline.php line 130
at Pipeline->Illuminate\Pipeline\{closure}()
in SubstituteBindings.php line 41
at SubstituteBindings->handle()
in Pipeline.php line 171
at Pipeline->Illuminate\Pipeline\{closure}()
in VerifyCsrfToken.php line 76
at VerifyCsrfToken->handle()
in Pipeline.php line 171
at Pipeline->Illuminate\Pipeline\{closure}()
in ShareErrorsFromSession.php line 49
at ShareErrorsFromSession->handle()
in Pipeline.php line 171
at Pipeline->Illuminate\Pipeline\{closure}()
in StartSession.php line 56
at StartSession->handle()
in Pipeline.php line 171
at Pipeline->Illuminate\Pipeline\{closure}()
in AddQueuedCookiesToResponse.php line 37
at AddQueuedCookiesToResponse->handle()
in Pipeline.php line 171
at Pipeline->Illuminate\Pipeline\{closure}()
in EncryptCookies.php line 66
at EncryptCookies->handle()
in Pipeline.php line 171
at Pipeline->Illuminate\Pipeline\{closure}()
in Pipeline.php line 105
at Pipeline->then()
in Router.php line 683
at Router->runRouteWithinStack()
in Router.php line 658
at Router->runRoute()
in Router.php line 624
at Router->dispatchToRoute()
in Router.php line 613
at Router->dispatch()
in Kernel.php line 170
at Kernel->Illuminate\Foundation\Http\{closure}()
in Pipeline.php line 130
at Pipeline->Illuminate\Pipeline\{closure}()
in TransformsRequest.php line 21
at TransformsRequest->handle()
in Pipeline.php line 171
at Pipeline->Illuminate\Pipeline\{closure}()
in TransformsRequest.php line 21
at TransformsRequest->handle()
in Pipeline.php line 171
at Pipeline->Illuminate\Pipeline\{closure}()
in ValidatePostSize.php line 27
at ValidatePostSize->handle()
in Pipeline.php line 171
at Pipeline->Illuminate\Pipeline\{closure}()
in CheckForMaintenanceMode.php line 63
at CheckForMaintenanceMode->handle()
in Pipeline.php line 171
at Pipeline->Illuminate\Pipeline\{closure}()
in TrustProxies.php line 57
at TrustProxies->handle()
in Pipeline.php line 171
at Pipeline->Illuminate\Pipeline\{closure}()
in Pipeline.php line 105
at Pipeline->then()
in Kernel.php line 145
at Kernel->sendRequestThroughRouter()
in Kernel.php line 110
at Kernel->handle()
in index.php line 55
_

恩知らずの

6
NKol

それは約PHPバージョンです。PHP 7.4rcでは、鍵ごとに配列にアクセスすることがあります。これはPHP 7.2でこのエラーが発生します。アレイを確認するために、empty($array)を使用するだけではありません。関数

2
ganji

同様の問題はすでに上場されています Laravelリポジトリ

によると PHP-Doc これはPHP 7.4の逆方向の互換性のない変更です。

非アレイの配列スタイルアクセス

boolintfloatまたはresourcearray$null["key"]など)は通知を生成します。

0
Sehdev

おそらくあなたはおそらく非配列タイプ(おそらくオブジェクトタイプ)にアクセスしようとしています。

私は同じになってきましたが、それが作る違いは、1つのスニペットがオブジェクトにアクセスしている間に、他方が有効な配列タイプにアクセスすることです。

以下のコードはエラーを生成しますint型の値の配列オフセットにアクセスしようとしている

$mymodel = MyModel::where(array(
            'someid' => $somevar
        ))->get();
foreach($mymodel as $data){
     //etc
}
 _

私はそれを更新しようとしました:

$mymodel = MyModel::where(array(
            'someid' => $somevar
        ))->get()->toArray();
foreach($mymodel as $data){
     //etc
}
 _

しかし、あなたがあなたのコードを投稿するように本当に役に立ちます。

0
Charmie