🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
for

for文は、様々なプログラミング言語で使われている制御構造です。for文に定義している条件から外れるまで、for文内の命令文を繰り返し実行します。

PHP

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

関数

関数(ファンクション・メソッド・サブルーチンとも呼ばれる)は、はプログラムのコードの一部であり、ある特定のタスクを処理するように設計されたものです。

Q&A

解決済

2回答

1319閲覧

FizzBuzz問題の仕様の誤りを正したい

Phenomenon2

総合スコア40

for

for文は、様々なプログラミング言語で使われている制御構造です。for文に定義している条件から外れるまで、for文内の命令文を繰り返し実行します。

PHP

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

関数

関数(ファンクション・メソッド・サブルーチンとも呼ばれる)は、はプログラムのコードの一部であり、ある特定のタスクを処理するように設計されたものです。

0グッド

0クリップ

投稿2019/11/23 02:20

編集2019/11/23 02:44

前提・実現したいこと

1から $max までの整数値についてFizzBuzzの関数を実行したいです。
特定の正の整数値を引数として受け取りのその数値によって戻り値が変わり、
・数値が3の倍数であれば、戻り値は”Fizz”
・数値が5の倍数であれば、戻り値は”Buzz”
・数値が3の倍数であり5の倍数でもある場合は、戻り値は”FizzBuzz”
・上記のどれも満たさない場合は、その数値自体を戻り値にする。という条件のものです。
1から $max までの整数値 を使用してfizzbuzz関数を実行するので、forはfizzbuzz関数の外にしたいです。
Fizzbuzz関数内でprintせず、一度returnしたうえで戻り値をprintするようにしたいです。

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

エラーメッセージ
特になし
上記の仕様を満たせていない点

該当のソースコード

コード <?php function fizz_buzz() { $max = 100; for($n=1; $n<=$max; $n++){ if($n%15==0){ print "FizzBuzz".PHP_EOL; } elseif($n%3==0){ print "Fizz".PHP_EOL; } elseif($n%5==0){ print "Buzz".PHP_EOL; } else{ print $n.PHP_EOL; } } } fizz_buzz() ?>

ソースコード

試したこと

特になし

補足情報(FW/ツールのバージジョン)

Cloud9

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

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

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

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

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

y_waiwai

2019/11/23 02:23

で、しつもんはなんでしょうか
Zuishin

2019/11/23 02:23

for が入ってますが。fizz_buzz(3) のように使うんじゃないんですか?
m.ts10806

2019/11/23 02:36

試したことが「テキストの理解」だけだと誰もそれがどんなものでどう理解できるのか確認できません。 また、現在のコードにおける問題点を記載してください。 具体的に何を解決したいのでしょうか。
m.ts10806

2019/11/23 02:39

今の質問内容から言えるのはこれくらいですが、それでも良いですか? > forはfizzbuzz関数の外にしたいです。 まずそのように書いてみましょう > izzbuzz関数内でprintせず、一度returnしたうえで戻り値をprintするようにしたいです。 ではそのように書いてみましょう。
m.ts10806

2019/11/23 02:49

そもそも構文エラーがでるコードなので「仕様を満たせてない」以前の問題であることは認識されているのでしょうか それに、「どの仕様を満たせてないか」認識できているかこの質問内容では分かりません。 その「仕様を満たせてない」ことに対して何も試してないということですか? 修正前「テキストの理解」と書かれていましたが、実際に理解しなければいけないのはテキストの内容ではなくコード、ロジックでは?
m.ts10806

2019/11/23 04:03 編集

ちなみに初心者では説明不可能な記述をあえて入れています。 理解せず使おうとすると痛い目みますよ。 仕様満たしてるかどうかまで確認してないようですし。
guest

回答2

0

ini の変更なしでイケるように書いてみた。

php

1<?php 2function fizz_buzz($i) { 3return@[@Fizz][$i%3].@[@Buzz][$i%5]?:$i; 4} 5$max=100; 6for($i=1;$i<=$max;$i++)print fizz_buzz($i).' 7';

ちなみに初心者では説明不可能な記述をあえて入れています。

投稿2019/11/23 03:36

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

m.ts10806

2019/11/23 03:42 編集

これ前見た気がする。 初心者どころか上級者でもパッと見理解が。 (たぶん業務でも中々使うことがない表現な気がする)
退会済みユーザー

退会済みユーザー

2019/11/23 03:42

改良版w 質問者は仕様満たしたかどうかぐらいチェックしてほしいよね。
m.ts10806

2019/11/23 03:43

課題だした側が理解できるかも不明ですね(これ前も同じやり取りした気が)
guest

0

ベストアンサー

課題っぽいので丸投げ回答。解説しません。
このまま提出して通っても通らなくても何の責任も持ちません。
「理解できないコードを書かない」が原則と言うのは忘れないでください。

php

1<?php 2function fizz_buzz(int $n):string 3{ 4 if ($n % 15 == 0) { 5 return 'FizzBuzz'.PHP_EOL; 6 } elseif ($n % 3 == 0) { 7 return 'Fizz'.PHP_EOL; 8 } elseif ($n % 5 == 0) { 9 return 'Buzz'.PHP_EOL; 10 } else { 11 return $n.PHP_EOL; 12 } 13} 14 15$max = 100; 16for ($n = 1; $n <= $max; ++$n) { 17 echo fizz_buzz($n); 18}

投稿2019/11/23 03:11

編集2019/11/23 07:21
m.ts10806

総合スコア80875

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

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

m.ts10806

2019/11/23 03:24 編集

ちなみに初心者では説明不可能な記述をあえて入れています。 提出先に突っ込まれて説明できなくても丸投げコードをそのまま使おうとしたあなたの責任だということです。 目的がコードを写すことだけの人にできるフォローはありません。 「もらったコードがなんか知らんけど動いたからそれでOK」というスタンスの人は私は嫌いですし、エンジニアは嫌う傾向にあります。 (これで提出先にこっぴどく怒られて自身のスタンスを見なおされるのを期待しています)
m.ts10806

2019/11/23 03:44 編集

ちなみに今高評価をした方は理解してないのに高評価をしているため、 私は迷惑しています。そもそもPHPやってない人だしなぜ高評価できるのか謎。
m.ts10806

2019/11/23 04:08

高評価理由書いてもらったらそれで納得するんですけど、 何も言わないまま取り下げたということは多少はこちらの意図が伝わったということでしょうかね。翌日に忘れてなければいいんですが。
m.ts10806

2019/11/23 04:10

>tonkoさん 遊ぶのはやめてください。 PHPでの活動が全くない人なのでなぜ評価できるのかと疑問を持っているのです。 「なぜ高評価したか」理由を書いてください。
kyoya0819

2019/11/23 06:08 編集

一応。 個人的にはte2jiさんのコードより端的?でわかりやすい かつ 初心者には説明不可能な記述があり好きです。
m.ts10806

2019/11/23 07:23

質問者のコードを要件に合わせて改修しただけですしね。 もうひとつ追加してみました。 本当は返り値で判断して色々遊びたかったですけどね。大喜利にするにはあまり遊べない話題なのでこのあたりで。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問