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

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

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

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

Q&A

解決済

2回答

526閲覧

算術演算子を含む計算式の自動生成について

peacesign

総合スコア7

PHP

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

0グッド

1クリップ

投稿2020/03/16 12:30

前提・実現したいこと

AWSで一定範囲内の整数及び算術演算子をランダムに出力し、
計算式を自動生成してくれるプログラムを作ろうとしています。

発生している問題・エラーメッセージ

エラーというわけではないのですが、
計算式は自動生成されましたが、文字列という認識になってしまい、
計算結果が表示されません。

該当のソースコード

phpで記載しています。

<?php function number_rd ($min_pt1,$max_pt1) { $number_pt1 = []; for ($i=0; $i<8; $i++){ array_push($number_pt1,mt_rand($min_pt1,$max_pt1)); } $operator_pt1 = array("+","-"); $number_rd=[]; array_push($number_rd,$number_pt1); array_push($number_rd,$operator_pt1); return $number_rd; } $level_1 =number_rd(1,9); print_r($level_1); $min_0 = 0; $question_1 = $level_1[0][mt_rand($min_0,count($level_1[0])-1)].$level_1[1][mt_rand($min_0,count($level_1[1])-1)].(int)$level_1[0][mt_rand($min_0,count($level_1[0])-1)]; var_dump($question_1) ; print $question_1; ### 試したこと 恐らく 数字と算術演算子を . で連結しているのが計算結果が表示されない理由なのだろうと思い、 . を外してみたり、数字のランダム生成部分を別の変数に格納したりと色々やってみましたが、 string型になってしまいます。 申し訳ございませんが、どなたか解決方法を教えて下さい。 よろしくお願い申し上げます。

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

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

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

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

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

guest

回答2

0

ベストアンサー

string型になってしまいます。

はい、ふつうにコードを組み合わせるだけでは文字列が出来上がるだけで、それに従った計算はなされません。

やり方としては、

  • evalを使う(楽だけど危険性もあるので、あまりおすすめはしません)
  • 数式を評価する専用のライブラリを使う(もしくは同等のものを作る)

といった方法が考えられます。

投稿2020/03/16 12:36

maisumakun

総合スコア146018

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

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

peacesign

2020/03/19 03:07

ありがとうございました。 大変参考になりました。m(._.)m
guest

0

PHP: eval - Manual
eval()使えばいいと思うよ。
ただし、外部からくる入力($_POSTほか)をeval()にかけるのは危険なので、
maisumakunさんの回答にあるような、自前の計算式評価ライブラリを用意したほうが安全。

投稿2020/03/16 12:37

編集2020/03/16 12:39
退会済みユーザー

退会済みユーザー

総合スコア0

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

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

peacesign

2020/03/19 03:07

ありがとうございました。 大変参考になりました。m(._.)m
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問