前提・実現したいこと
PHP(Laravel)でレシピ投稿のシステムを作っています。
レシピの投稿画面で、材料をチェックボックスから複数選択して、valueの合計値をcontroller側で計算する機能を実装中に以下のエラーメッセージが発生しました。
※「合計値」というのは、例えば「たまねぎ(value=1)」と「にんじん(value=2)」にチェックをしたら「3」を格納するということです。
Form::checkboxで複数のチェックボックスの値を取り出すには、どこを改善したらよいのでしょうか。
アドバイス何卒よろしくお願い致します。
発生している問題・エラーメッセージ
Illegal string offset 'value'
該当のソースコード
php
1 <div class="form-group"> 2 {!! Form::label('ingredients[]', '材料') !!} 3 {!! Form::label('ingredients[]', 'たまねぎ') !!} 4 {!! Form::checkbox('ingredients[]', 1,['class' => 'form-control']) !!} 5 {!! Form::label('ingredients[]', 'にんじん') !!} 6 {!! Form::checkbox('ingredients[]', 2,['class' => 'form-control']) !!} 7 {!! Form::label('ingredients[]', 'たまご') !!} 8 {!! Form::checkbox('ingredients[]', 4,['class' => 'form-control']) !!} 9 {!! Form::label('ingredients[]', 'きゃべつ') !!} 10 {!! Form::checkbox('ingredients[]', 8,['class' => 'form-control']) !!} 11 </div>
php
1 //チェックした材料の配列を取り出す 2 if(isset($_POST['ingredients']) && is_array($_POST['ingredients'])){ 3 $ingredients = $_POST['ingredients']; 4 } 5 6 7 $ingredient_total = 0;//材料のvalue値の合計値 8 //チェックした配列のvalueを取り出し加算 9 foreach($ingredients as $ingredient){ 10 $ingredient_total += $ingredient['value']; 11 }
試したこと
foreachの代わりに、
$ingredient_total = array_sum(array_column($ingredients,'value'));
も試してみましたが、同じくvalueが認識されませんでした。
補足情報(FW/ツールのバージョンなど)
PHP 7.2.22
Laravel 5.5
回答2件
あなたの回答
tips
プレビュー