質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Laravel

LaravelとはTaylor Otwellによって開発された、オープンソースなPHPフレームワークです。Laravelはシンプルで表現的なシンタックスを持ち合わせており、ウェブアプリケーション開発の手助けをしてくれます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

2回答

909閲覧

データの桁ごとの合計値を出したい

kon124

総合スコア9

Laravel

LaravelとはTaylor Otwellによって開発された、オープンソースなPHPフレームワークです。Laravelはシンプルで表現的なシンタックスを持ち合わせており、ウェブアプリケーション開発の手助けをしてくれます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

0クリップ

投稿2020/01/23 09:17

mac
laravel6

##したいこと
現在データベースがこのようになっています

User_dataテーブル

iduser_idresult
1111001
1110000
1111101

resultは0と1の組み合わせで形成され全て五桁です.

そこで,resultを桁ごとに計算して配列にしたいです.
上の例ですと,結果としてはsum = [3, 2, 1, 0, 2]が得られる仕様です
(結果も五桁のみ.六桁はダメ)

##試したこと(失敗例)
まずcontrollerでデータを合計しました

$error_sum = User_data::sum("error");

その後別ファイルで配列にします

$sum = str_split($error_sum); $sum_data = []; for ($i = 0; $i < count($sum); $i++) { $sum_data[$i] = $sum[$i]; };

これですと,最初に合計してしまっているのでデータが十個以上になると桁数が変わってしまいます.

何か良い方法はないでしょうか?

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2020/01/23 09:22

resultの一桁ごとにカラムを分けたほうが楽に扱えるのに。テーブル構造は変更できないのでしょうか?
kon124

2020/01/23 09:26

おっしゃる通りではありますが,テーブル変更はできないです・・・今回laravelでアプリを作っていますが,データベースは他のシステムと共有する形なので
yambejp

2020/01/23 09:55

レコードのidに同じものを例示するのはサンプルとして最悪 resultの方は何でしょう? 文字列?int(5)のunsigned zerofill?
yambejp

2020/01/23 10:04

> テーブル変更はできない ならビューをつくっておけばいいのでは?
guest

回答2

0

一応こんな感じでどうでしょう?

投稿2020/01/23 10:19

yambejp

総合スコア114843

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yambejp

2020/01/23 10:19

create table tbl(id int primary key,user_id int,result int(5) unsigned zerofill); insert into tbl values (1,1,11001), (2,1,10000), (3,1,11101), (4,1,00111);
yambejp

2020/01/23 10:19

select sum(mod(truncate(result/pow(10,4),0),10)) as sum1, sum(mod(truncate(result/pow(10,3),0),10)) as sum2, sum(mod(truncate(result/pow(10,2),0),10)) as sum3, sum(mod(truncate(result/pow(10,1),0),10)) as sum4, sum(mod(truncate(result/pow(10,0),0),10)) as sum5 from tbl
guest

0

UserDataをすべてget()して取得したデータに対して桁ごとに足していけばいけるのでは

$sum_data = []; $error_sum = UserData::get(); foreach($error_sum as $sum){ $result = str_split($sum->result); for($i=0;$i<count($result );$i++){ $sum_data[$i]+=$result[$i]; } }

投稿2020/01/23 09:56

date

総合スコア1820

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問