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

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

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

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

Q&A

解決済

3回答

1498閲覧

関数で二乗のされた数字をreturnしたいです

yukina00235

総合スコア62

PHP

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

1グッド

0クリップ

投稿2020/07/07 05:20

関数を作って、その関数に配列を渡して渡した値の二乗になった配列を返したいのですがうまくいかず、ご指導いただけないでしょうか?

関数の使い方と配列の指定がまだ良く分かったいないのでご指摘頂けますと嬉しいです…。。

PHP

1function square($numbers) 2{ 3 foreach ($numbers as $val) { 4 $reNum = pow($val, 2); 5 return $reNum; 6 } 7} 8$numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]; 9square($numbers); 10 11var_dump($reNum);

$reNum = pow($val, 2);
これって配列の指定ができていないのですが、どうすると良いですか?

また、var_dump($reNum);しても
PHP Notice: Undefined variable: reNum in
NULL

となってしまします、宜しくお願いいたします。㎜

hayato7👍を押しています

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

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

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

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

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

guest

回答3

0

ベストアンサー

こういうことでは?

php

1function square($numbers) 2{ 3 return array_map(function($x){ 4 return pow($x, 2); 5 },$numbers); 6} 7$numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]; 8$reNum=square($numbers); 9var_dump($reNum);

投稿2020/07/07 06:53

yambejp

総合スコア114812

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

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

yukina00235

2020/07/07 07:13

有難うございます。試したところできました。 初心者ですみません、今回記載頂いた形式の記述をよく見かけるのですが、これはどういった場合の書き方になるのでしょうか?このあたりの意味が理解できておらず…。 },$numbers); 何と調べるとこの書き方が学べますでしょうか?㎜
yambejp

2020/07/07 07:31

array_mapは第2引数から1つずつデータをとってきて、第1引数である コールバック関数に値を渡します。 コールバック関数は渡されたデータを処理して、戻していきますが 一つ一つの戻り値は最終的に配列となります
gogoweb_ikeda

2020/07/07 07:52

おそらく知りたいであろう内容は 「コールバック関数」か「無名関数」のどちらかだと思われます。 違った場合どの部分の書き方かもう少し細かくお願いします。
yukina00235

2020/07/07 08:52

有難うございます、コールバック関数と無名関数は調べてみたいと思います。 無名関数は関数を変数に入れるのですよね? 再度使い方を確認してみます、有難うございます。㎜
guest

0

配列に全体に対して関数を実行する場合array_mapが便利です。

array_map
丁度参考サイトの例は配列の値を三乗するサンプルですね。少しいじれば希望の動作になると思います。

投稿2020/07/07 05:44

gogoweb_ikeda

総合スコア1426

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

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

yukina00235

2020/07/07 07:07

有難うございます、array_mapを調べてみたのですが、今回のようにfunction square 自分自身の中の処理に適用するにはどうしたらよいでしょうか? 試してみたのですが、中身がNULLになってしまいました。。 function square($numbers) { $numbers = array_map("square", $numbers); var_dump($numbers); } $numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]; square($numbers);
guest

0

これって配列の指定ができていないのですが

そこで配列を指定する必要はありませんforeachで配列の中身を1つずつ回していますので、「1個だけ」2乗するコードを書けば問題ありません。

var_dump($reNum);しても

$reNumsquare内のローカル変数ですので、外部からはアクセスできません。

投稿2020/07/07 05:28

maisumakun

総合スコア145183

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

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

yukina00235

2020/07/07 06:19

有難うございます、 >「1個だけ」2乗するコードを書けば問題ありません。 なるほどです、foreachで取り出しているので、これ自体は配列関係ないのですね。 その場合、foreachで1つ1つ二乗した数を再び配列に戻す場合はどのようにすればよいのでしょうか? >$reNumはsquare内のローカル変数ですので、外部からはアクセスできません。 returnで戻しているのに確認はできないということでしょうか? なんだか混乱してまいりました…。。
maisumakun

2020/07/07 06:20 編集

> returnで戻しているのに確認はできないということでしょうか? 「square($numbers);」となっているように、returnした値は無視されています。
yukina00235

2020/07/07 07:16

returnがいまいち理解できていないので再度調べてみたいと思います。 有難うございます。。
yukina00235

2020/07/07 07:20

なんだか見ただけはできた感じなのですが、このような記述はNGでしょうか? print_r($reNum);しますと、それっぽい配列が確認できるのですが…。 $reNum[] という書き方もおかしいでしょうか? function square($numbers) { foreach ($numbers as $val) { $reNum[] = pow($val, 2) . PHP_EOL; } print_r($reNum); } $numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]; square($numbers);
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問