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

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

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

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

Q&A

解決済

1回答

942閲覧

半角スペース区切りを挿入しつつ、foreachを使う方法

megaking

総合スコア25

PHP

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

0グッド

0クリップ

投稿2022/03/25 16:19

編集2022/03/25 16:20

Paizaラーニングやっており、問題に詰まっています。
D003:掛け算のリスト
https://paiza.jp/works/challenges/34/retry
「正の整数1から9に整数nをそれぞれを掛けた数を半角スペース区切りで出力して下さい。」

↓(ここまで作った計算式)

<?php $input_line = fgets(STDIN); $numbers = array(1,2,3,4,5,6,7,8,9); $spaces = implode(" ",$numbers); foreach ($spaces as $space) { echo $input_line*$space; } // ?>

これだと、どうしても出ない状況です。
ポイントは**「半角スペース区切りで出力」**かと思いますが、「implode」で挿入させましたが、そこから先はどう考えて、空白入りのループ処理をしていけばよいでしょうか?

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

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

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

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

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

m.ts10806

2022/03/25 23:19

PHPマニュアルで機能確認していますか?
megaking

2022/03/26 02:54

PHPマニュアルですが、なかなか使い込ませません。 というのも、どんな言葉で検索したら、欲しい情報がクリーンヒットするか、が分からないのです。もうこれまでかなり検索かけてますが、なかなかよい情報がヒットしません。
m.ts10806

2022/03/26 03:13

>なかなか使い込ませません。 どういうことですか?「使いこなせません」なら分かるのですが・・・。 ひとまず使おうとしている機能がどういう役割をするかくらいはPHPマニュアルで十分に思います。 検索するときもクリーンヒットを狙うより細分化して単語細切れにするとかにしたほうが良いです。(ただ、結局ロジックを考えるのは書く人の仕事なので、あまり狙いすぎて手元のコードが進まないのはよろしくないです。基本コピペで終わるようなことってないですし、参考先のコードを読めないと使えません)
megaking

2022/03/26 03:17

すいません、ミスタイプでした→仰る通り「使いこなせません」が正解です。 また、検索するときのコツもご教示いただき、ありがとうございます。 まだまだ初心者で的外れな質問あるかと思いますが、慣れていけるよう頑張ります。
guest

回答1

0

ベストアンサー

  • $numbers は配列です。
  • implode の返り値は文字列なので $spaces は文字列です。
  • foreach の as の手前には配列を指定します。foreach に文字列 $spaces を指定しているのは間違っています。

php

1<?php 2 $input_line = fgets(STDIN); 3 $numbers = array(1,2,3,4,5,6,7,8,9); 4 $spaces = implode(" ",$numbers); 5 6 echo $spaces;

この出力結果を確認した上で、プログラムを修正してみてください。

投稿2022/03/25 16:51

arcxor

総合スコア2857

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

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

megaking

2022/03/26 01:57

ありがとうございます。 確かに上記までの出力結果までは既に出せているのですが、ここから本題の「整数nをそれぞれを掛けた数」はどうやって算出するのでしょうか?? $spacesは文字列のためforeachが使えないということでしたので、そこが分からないポイントです…
arcxor

2022/03/26 12:05

implode をする前に $numbers の値を foreach を使って書き換えましょう。
megaking

2022/03/26 14:10

ありがとうございます。 仰せのように、implode をする前に $numbers の値を foreach を使って、出しましたが、うまくいきません。。。 具体的に、何を、どうすればよいのでしょうか? 自分なりに考えられるあらゆることを試してみましたが、どうにも分かりません…! $input_line = fgets(STDIN); $numbers = array(1,2,3,4,5,6,7,8,9); foreach ($numbers as $number) { echo implode(" ",$number ); } ↓ Runtime error
megaking

2022/03/27 05:39

ありがとうございます…!! 解説があれば、思考が浸透しやすいのですが… 1.「$numbers = [];」→これは何のためなのか 空の配列を変数$numbersに代入する意味とは?(通常だと$input_lineそのままでも計算できるが…) 2.そして、forを回した後に、その$numbersと[]をくっつけた変数→$numbers[]  はどういう意図? 3.echoのところの「 PHP_EOL;」とは何の意味?(ちなみに $result だけでもいけました)
arcxor

2022/03/27 07:05

自分で調べることはできませんか?
megaking

2022/03/27 08:20

承知しました 自分で調べます!ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.31%

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

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

質問する

関連した質問