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

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

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

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

関数

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

Q&A

解決済

1回答

1184閲覧

PHPのユーザ定義関数が実行できない

Takuma.Inoue

総合スコア26

PHP

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

関数

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

0グッド

0クリップ

投稿2022/03/25 06:28

編集2022/03/25 07:36

34行目のgetnum関数を実行すると、Uncaught Errorというエラーになる問題で困っています。

私の行った手順は以下です。
(1)関数に対しての引数をnullにしてみる
(2)関数に対しての引数を$serchNumとは別のからの変数にしてみる
(3)elseifの条件分岐の際、比較演算子を完全一致にしてみる

しかし、動作は変わらず以下のようになりました。

PHP Fatal error: Uncaught Error: Call to undefined function getnum() in /workspace/Main.php:33 Stack trace: #0 {main} thrown in /workspace/Main.php on line 33

私は、引数を指定しない場合はエラーが出ることはなく、返り値もないため出力がされないだけで正常に終わると予想していました。

下記にコードを記載します。

php

1<?php 2 class Employee{ 3 //プロパティの宣言 4 public $inputNumber; 5 public $employeeNumber; 6 public $name; 7 8 // コンストラクタ設定 9 // 引数として名前と年齢を受け取る 10 public function __construct ($inputNumber, $employeeNumber, $name){ 11 $this->inputNumber = $inputNumber; 12 $this->employeeNumber = $employeeNumber; 13 $this->name = $name; 14 } 15 16 function getnum($serchNum){ 17 return employeeNumber; 18 } 19 20 function getname(){ 21 return name; 22 } 23 } 24 25 $num = fgets(STDIN); 26 $objArray = array(); 27 28 for ($i = 1; $i <= $num; $i++) { 29 $inputArray = explode(" ", trim(fgets(STDIN))); 30 if ($inputArray[0] == "make") { 31 $objArray[] = new Employee($i, $inputArray[1], $inputArray[2]); 32 }elseif ($inputArray[0] === "getnum") { 33 $serchNum = $inputArray[1]; 34 getnum($serchNum); 35 36 }elseif ($inputArray[0] == "getname") { 37 38 } 39 } 40 // var_dump($objArray); 41 print_r($objArray); 42?>

やりたいこと
下記入力を受け取った際、1文字目の文字に対して出力を変えたい

入力される値

7 make 2742 mako getnum 1 make 2782 taisei getname 2 make 31 megumi

希望する出力

2742 taisei mako megumi

参考資料
イメージ説明

参考情報かアドバイスをいただければと思います。

よろしくお願いします。

追記
公開の許可を確認いたしました。
イメージ説明

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

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

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

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

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

Takuma.Inoue

2022/03/25 06:45

自分の情報が漏れていました。 当方はpaizaでPHPを学習中で、現状はクラスや関数の理解を深めている状況です。
m.ts10806

2022/03/25 07:28

念のためですが、スキルチェックの方ではないですよね? (そしてスキルチェックの規約は理解されてますよね?)
Takuma.Inoue

2022/03/25 07:35

質問いただきありがとうございます。 これはスキルチェックではなくレベルアップ問題集です。 この問題に関しては公開は許可されているのを確認いたしました。
guest

回答1

0

ベストアンサー

getnum()を呼び出したいなら

$employee = new Employee($i, $inputArray[1], $inputArray[2]); $employee->getnum($serchNum)

のように呼び出さないとダメですね。
単純にgetnum()ならundefined functionになると思います。
何をしようとしているのかちょっと分からないで具体的なアドバイスはできないのですが、if文の手前でnew Employeeしないとだめかな。

投稿2022/03/25 06:43

編集2022/03/25 06:44
AbeTakashi

総合スコア4537

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

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

Takuma.Inoue

2022/03/25 06:48

ありがとうございます。 質問の仕方も未熟で恐縮なのですが追記いたします、
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問