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

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

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

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

Q&A

2回答

2385閲覧

PHPのargvでの定義ミスについて

moukin

総合スコア5

PHP

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

0グッド

0クリップ

投稿2021/06/06 09:29

編集2021/06/06 09:49

前提・実現したいこと

プログラムの内容自体はほぼmintia191さんの”コマンドライン引数を自然数かどうか判別したい”にあるPHPで作成した12の約数で文章が変わるものです
定義がされていないというエラーみたいなのですが
ただ普通にコマンドラインでの入力を成功させたいです。
PHPを初めて書いたので書き方のミス等があればそれも教えて頂きたいです

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

Undefined array key 1 in /workspace/Main.php on line 5
がエラーとして自分の場合だと表示されてしまいます
$argvに関するエラーなのですが定義がされていないというのが初学のためよくわかっていません

該当のソースコード

PHP

1<?php 2$a = $argv[1]; 3 4function Number($a) 5{ 6 if ($a < 12) { 7 echo '12以上の自然数を入力してください'; 8 } 9 10 for ($i = 1; $i <= $a; $i++) 11 { 12 if ($i % 12 == 0) { 13 print('keypoint'); 14 } 15 elseif ($i % 3 == 0) { 16 print('key'); 17 } 18 elseif ($i % 4 == 0) { 19 print ('point'); 20 } 21 else { 22 print($i); 23 } 24 } 25} 26Number($a);

試したこと

とにかくコマンドラインの定義とかを調べたのですが自分と同じエラーメッセージでの対処方法が
見つけられませんでした

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

環境構築で失敗しがちなので、まずブラウザで動くpaiza.ioに上記のコードを入力し、
入力のところにphp Main.php 21 と書き込んでみたのですがエラーが出るのはこういった
環境によるミスなのかもわかっていません

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

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

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

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

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

m.ts10806

2021/06/06 09:41

いえあの、コードを。 どのような表示になるかは私の回答を参考にしてください。
退会済みユーザー

退会済みユーザー

2021/06/07 01:09

どういう環境で、どういうふうにコードを実行しようとしているか、質問文中に加筆してください。
moukin

2021/06/08 04:50

補足情報にある通り、paiza.ioというブラウザ上でPHPを動かせるサイトにコードを書いて実行しました
m.ts10806

2021/06/08 05:22

WindowsならXAMPP MacならMAMP 採用したらそんな環境構築で失敗することはないです。
guest

回答2

0

phpをコマンドラインから実行する、ってことがわからないのでしょうか?

Windowsならコマンド・プロンプト、Linuxならコンソールとか、
文字入力でコマンドを入力して実行させるやり方の実行なのですが。

PHP: $argv - Manual

Windowsの例で説明すると、コマンドライン上で、
php.exe 実行したいphpファイル名 パラメータ1 パラメータ2 パラメータ3 ...
みたいにして実行したりします。
それぞれの区切りは半角空白です。

投稿2021/06/07 01:10

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

0

$argvに関するエラーなのですが定義がされていないというのが初学のためよくわかっていません

言語関係なく、何も宣言も定義もされないままの変数を参照することはできません。

php

1echo $a; //未定義 2 3$a = "hoge"; 4 5echo $a; //定義済み 6

「定義する」とは変数や関数やクラスなどに名前と「どういう機能を持たせるか」を明確に記述することです。

変数なら名前の他に型や初期値など
関数なら名前の他に返却値や引数や中の処理など

PHPマニュアルや入門書などで内容確認したほうが良いです。
動画ではそこに至るまでの前提や背景など端折ったり、「環境構築や基礎はある程度出来ている前提」で話が進むこともあるでしょうし(動画で学習したことないから分かりませんが)
きっと$argvに関する言及が前後や別の動画で解説されている可能性もありますが、そこはどの動画のことなのか分からないので何とも言えません。(何も解説やフォローがないなら動画投稿者の配慮不足とも言えます)

PHPでしたらそれこそ「PHPとは何か」から。

投稿2021/06/06 09:38

編集2021/06/06 11:46
m.ts10806

総合スコア80861

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.46%

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

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

質問する

関連した質問