DOUG LLOYD:だから我々はしました C言語で多くの作業を行って、 Cは本当にクールです 言語それはあなたを与えるので 本当にダイビングする能力 あなたのプログラムに低レベル。 我々は、物事を行うために取得 操作として本当に分 メモリの個々のバイト。 本当にポインタリコール 私たちにその柔軟性を可能にします。 しかし、我々は常に持っている必要があります 詳細の微粒子レベル 我々のプログラムで? おそらくない、右? そして、我々は持っているつもりなら であることの間のトレードオフ 本当に、本当に行うことができます 分のものと本当に、本当に 我々は考える必要はありません大きなもの 我々が実装する必要はありません これらの本当に大きなアイデア場合 彼らはすでに私たちのために組み込まれています、 一般的に、大きなを構築するための プログラムや大規模なプロジェクト、 我々はおそらく側に誤るするつもりです より多くの言語のものが組み込まれました 私たちのために、代わりに持っていることの 低レベルのもの。 PHPは本当に出番そしてそれはです。 さて、理由の一つ 我々はCS50でPHPを教えること それは頻繁に触発されていますということです C.そして実際に、私の意見では、 実際には2つがあります 先祖の言語その 今日では非常に一般的です。 CとLISP。 そして、彼らは先祖の言語です 他のすべての近代的なプログラミングのため 開発した言語 それ以来、触発され、 どちらか一方の構文的により。 PHPは構文的に非常に似ています Cに、スキームのような言語のに対し、 例えば、その あなたはのことを聞いたことがあり、 重く言語に触発され、 古い言語であるLISPと呼ばれます。 私たちが教えだから理由 CS50でPHPはつまり、 基本的にように、Cを知ることにより あなたはこの時点でそうであるように、 あなた与える拾っPHP、 はるかに高いレベルのものを行う能力 Cはよりも、ではありません そのハードルの多く、 あなたが既に持っているので、 構文の基本的な考え方。 Cはほとんど出回っています この時点で45歳。 PHPは、約20年前から出回っています。 そして、その25年後に 、プログラマーの間で それらは非常にあると判断し むしろ、より高いレベルの能力を持っています そして、ミスや闘争 その間の20年の PHPと他の現代語につながりました。 のPHPの偉大な選択肢 ソフトウェアの言語 それがためにallow-- あなたをthat--ソフトウェア でそのことを行う必要があり Cは実際に複雑です。 したがって、たとえば、作業 C言語の文字列を含みます ので、非常に複雑です 我々が知っているように、C言語の文字列 実際に文字だけの配列です。 これは、組み込みデータ・タイプではありません。 それとももっと根本的に、 私たちも、C言語でカバーしていないもの、 あなたがする必要がある場合はどのような 一部のコンピュータネットワーク? 大丈夫? Cはそれを行う能力を持っていますが、それはそうです 難解と実際にやることが難しいです。 場合、それは素晴らしいことではないだろう 言語は、組み込みの、簡単な方法を持っていました ネットワークを実装するには? そして、PHPはそれを作るの言語です、 または、かなり多くいることを容易にします。 私が言ったように、PHPは非常に重く触発され Cでの構文は非常に似ています。 そしてそれがうまくいけば作るべき 1から他への移行 いくつかより少し柔らかめ 他の言語があるかもしれません。 PHPの書き込みを開始するには、ちょうど開きます .PHPファイル拡張子を持つファイル。 技術的にはこれではありません 実際に必要な、 しかし、あなたは構文のようなものが必要な場合 IDEで強調表示するので、そのタイプ 名、変数名、関数、 あなたは、言語のキーワードを知っています で強調されています 特定の色、一般ます であなたのファイルに名前を付けたいです 特定のファイル拡張子。 だから我々は.PHPとのファイルを命名しました 拡張子が、その後も、PHPと、 私たちはその中に書き込み、すべてのPHPコード ファイルには、これらのPHPで囲まれなければなりません 私たちが見るの区切り文字 ここでは、画面上。 アングルブラケット?PHPは開始します。 そして、私たちは、PHPのすべてを書きます 我々はその間にするコード。 その後 ? アングルブラケットが閉じます。 我々は、その後、これを行わない場合 何が起こるだろうか? それはクラッシュするつもりはありません。 これは、ことはないだろう 本当に私たちのプログラムを台無しに。 しかし、それは持っていることはないだろう 私たちが望む効果。 何が起こるだろう、本当に、あります 我々がしようとすると、このプログラムを実行するときに、 すべてではないこれらの区切り文字の間 そのままプリントアウトされようとしています。 これは、ことはないだろう 実際にコードを実行し、 それだけに起こっています そのままそれをプリントアウト。 さて、なぜケースはありますか? だからCは知られています コンパイル言語として。 あなたは、おそらく精通しています あなたのプログラムを作成するステップ、 .cファイルと.hファイルを回します メイクを持つ単一の実行可能ファイルに、 特に使用して 私たちのコンパイラとして打ち鳴らします。 PHPは、しかし、しません この等価を持っています。 PHPはと呼ばれるものです インタプリタ言語。 そして、それは何を意味するのでしょうか? まあ、それは我々が変換する必要がないことを意味し 0と1に私たちのソースコード 予め。 むしろ、プログラムがあります、 呼ばれています PHPとPHPを理解し、 ソートの場でそれを行うことができます。 それは、本当に正確に正確ではありません それはかなり良いアナロジーです 何が起こっているの。 これは、それらを解釈しています その場で0と1。 そしてそれは知られていない場合 何かを処理する方法、 それはどのように認識していない場合 プロセスPHP​​、おそらく 右、そこにそのテキストを配置したいですか? あなたは、おそらく内にコードを書きたいと思いました そこに、それはPHP--の間ではない場合でも、 PHPの区切り文字。 But--ので、つもりはありません あなたのためにそれを削除するには、 それだけで基本的にはそれを捨てるために起こっています。 だから、印刷するために起こっています その画面に出て。 それが悪いように思えるこれは、 事は、実際にそれはです 本当にになるだろう 良いこと、私たちはよなど 私たちが話をしたときに表示 PHPのWeb開発、 それは私たちができることを意味しますので、 PHPとHTMLをまき散らします。 私たちは一緒にそれらを使用することができます よりダイナミックなWebページを作成します。 しかし、その中の詳細 PHPのWeb開発に関するビデオ。 だから、PHPの構文は何ですか? つまり、このビデオはすべてに約あるものです。 のは、それについて話しましょう​​。 そこで、変数を開始します。 PHPの変数が存在します。 ちょうど2つの大きながあります。 C.との違い 最初はそこにあるということです 何の型指定はありません。 我々は、int型を言う必要はありません char型、float型、すべてのもの。 私たちはもうそれを行う必要はありません。 PHPは近代的な言語です。 それはあなたがしているものを把握することができます ベストを尽くすかにしようと あなたがやろうとしているものと推測として。 だから、かなりいいです。 他の事は、すべての変数であります 名前はドル記号で開始する必要があります。 それはちょうどに慣れるための何か。 ので、それは、少し奇妙です PHPが理解できるように、です 変数と何ではありませんものです。 だから、すべての変数名 ドル記号で始まります。 だから、C言語で、私たちは何かを言うかもしれません このように、int型のx = 54。 私たちは、PHPでもうそれを行う必要はありません。 私達はちょうどX = 54 $を言うことができます。 そして、我々はC言語で、例えば、言うことができます、 我々はCS50の.hポンド含まれていた場合 ヘッダファイル、我々が言うことができます 文字列フレーズは= "これはCS50です。」 我々は、しかし、PHPでそれを行う必要はありません。 私達はちょうど$フレーズを言うことができます = "これはCS50です。」 そして、実際には、文字列は今で PHPの組み込みデータ型、 かPHPが理解します 何文字列です。 これは、配列から独立したのです それはCであるような文字の すべてのお気に入り Cからの条件文 まだあなたが使用するために用意されています。 だから、そこには大きな変遷。 我々は持つことができますsay--できます このようなif文。 $ yの43、または$ Z = 15の場合。 だから、非常に簡単です。 我々は、以下の場合に、他のことができます。 我々は、もし、他の場合することができます。 そして、何かに気付きます かなりここで素敵な、これ それらの一つの一種であります C、予告対PHPの利点 どんな機能ここでは使用していませんか? 私たちは、比較するために==を使用しています 変数、$名、文字列へ。 我々は右、C言語でそれを行うことができませんでしたか? 私たちは、呼び出された関数を使用していました StrComp関数またはStrEndCompまたは任意の その関連いとこの。 だから、すでに私たちは、これらの利点を参照してください。 私たちは何かをする必要はありません 愚かなまたはおそらく直感 関数を呼び出すように StrComp関数は、私はちょうどテストする場合 値が文字列と等しいかどうか。 私はちょうど相当します使用することができ、 私は何かを行うことができますように。 だから利点があります。 時には、ところで、あなたがかもしれません ELSEIF、他の場合と同様に一つの単語を参照してください。 そして、それは同様にPHPでOKです。 だから、時々、あなたはそれを見るかもしれません。 それはタイプミスではありません。 PHPは、実際のelseifを理解しています。 なぜ私は知りません それを実施することを決定しました、 しかし、我々は何度も見てきたように これまでの私たちのビデオを通して、 私たちのプログラマがあればそれを愛します 我々はすぐに物事を行うことができ、 そのためのスペースを取り除きます 明らかに大きな利点です。 だから、場合とELSEIFです。 また、三項演算子を持っています、 リコールクエスチョンマーク、コロン、 それ以外の場合は本当に短い形式のため または条件分岐。 そしてどうやら、この中で、 私たちはここでやろうとしています 変数を割り当てるです trueまたはfalseのいずれかの$文字、 $のVARかどうかに応じて、 アルファベット文字です。 だから、これははisalphaにかなり似ています 我々はCから精通していること これはPHPの同等の一種です。 関数は明らかです ctype_alphaと呼ばれます、 それは、我々はPHPでそれを行う方法です。 だから、すべてこれがあることを行っていることと、あります $のvarは文字で、$文字が真です。 $のvarが文字でない場合は、 $文字はfalseです。 また、まだswitch文を持っています。 我々としても、Cからのものを思い出します。 そこに非常に上部には、それは我々が行う方法です GET intまたは文字列を取得のようなもの。 だから、PHPが組み込まれていることがあります。 私たちはもうCS50ライブラリを必要としません。 私達はちょうど関数のreadlineを使用することができます。 何それを行うために起こっていることは、印刷です メッセージ出て、 "あなたの状態、 、してください "とし、プロンプトを点滅 入力するユーザを待っています いくつかの情報。 今他に何に気づきます 我々は、スイッチで行うことができます。 あなたが前にそれを使用している場合、 あなたはそのスイッチを思い出して 整数にかなり制限されており、 文字が、今、私たちは、文字列を使用することができます。 そして実際に、switchステートメント PHPでかなり柔軟です Cからそのいとこより ループ。 のちょうど条件文のように、すべての 古いお気に入りはまだそこにあります。 我々は数えるwhileループを持っています 1からこの場合は100に。 ループしながら、私たちは何しています それは、1から100までカウント 我々はループのために持っています それは1から100までカウントします。 だから、そこには大きな飛躍。 構文はかなりあります まったく同じくらい、 今私たちが使っている除きます 代わりにドル記号変数 整数変数を宣言するのか 私たちのカウンターのようなもの。 物事が取得する場所ここです しかし、Cよりもずっと良いです。 配列。 私たちがしたときにリコール ためには、Cの話 私たちは成長し、縮小するために 情報のセット 私たちは、デフォルトの並べ替えするために必要な リンクリストのこのアイデアに、 C配列のサイズが固定されたため。 私たちはそれらを縮小することができませんでした。 我々は彼らを育てることができませんでした。 我々は、メモリを再割り当てする必要がありました そしてこのすべての狂気を行います または、リンクされたリストを使用します かなり多くのスペースを取ります。 しかし、PHPで、配列です もうサイズが固定されていません。 彼らは成長することができ、それらは縮小することができます。 だからもう一度、この20年間存在しました Cの最初のリリースとの間 そして、最初のリリースのPHP、 私たちは、あなたが知っている、ことを決定し、 それは本当に素晴らしいことです 我々はこれを行うことができれば。 そして、私たちはこれを実装しました。 だから、PHPの配列は、中に固定されていません サイズ、およびPHPは本当にいないため、 プログラマの前向きを持っています タイプの概念、 我々は、データ型を混在させることができます 私たちの配列内の、あまりにも。 だから、私たちも、すべて使用する必要はありません 整数またはすべての浮動小数点、 我々はすべての組み合わせを持つことができます 1つのアレイ内の異なる種類。 配列の宣言 かなり簡単。 それはちょうど、他の変数のようなものです。 $のNUMS =配列(1、2、3、 関数である4)、配列 それは、PHPに組み込まれていること あなたのための配列を作成します。 これは、4つの値の配列を作成し、 この場合の数字は、$ NUMSと呼ばれます。 そして、それを行うには複数の方法があります。 そして、我々はするつもりです このPHPの多くを参照してください。 PHPは、多くの異なるによって開発されました 人と成長し、成長し、成長します。 わずか2かは、通常はありません PHPで何かをするには3つの方法、 通常、10または20のようにあります。 ここでちょうど別のが一般的です 配列を宣言する方法。 $のNUMS =角括弧1、2、3、4。 だから、これは一種の同様のCの角にあります むしろ、中括弧表記をbr--。 $ - またはそれはint型NUMS広場になります ブラケットは中括弧1、2、3、4に等しいです。 PHPでそれは$ NUMS =正方形です ブラケット1、2、3、4。 しかし、ここではこれらの例の両方が私を与えます この場合、整数の4つの配列。 私は今に何かをタックしたい場合はどう? まあ私はちょうど$ NUMS 4を、言うことができました 再び、我々はまだここに0からカウントしています PHPで、第五になります 配列の要素。 私はちょうどそれを言うことができます。 私はワンセグに苦しむするつもりはありません 私の配列がちょうどであるため、故障 それに対応するために成長するだろう。 それは右、かなりいいの? そして実際に、私もする必要はありません 私はそれを配置する場所を指定します。 私はちょうどこれを言うだけすることができます 右端の上にタック、 または私もちょうどできました $ NUMS 20または千と言います。 それは本当に問題ではありません。 それはまだだけに起こっています 最後に右のそれをタック。 だから私は成長し、私たちがしているas--できます ここでそれをカバーするつもりはありません、 しかし私は、スプライスまたはストリップすることができます 配列のうちの要素だけでなく、 アレイは、対応するために縮小されます それが今、存在しないか、または空のスペース。 タックす​​るための別の方法があります アレイ上の何か、 これarray_push呼び出される関数です。 そこで再び、であることのちょうどこのアイデア 物事の多くの異なる方法で行うことができます。 だから我々は今、3つの異なる方法を見てきました アレイ上に別の要素をタックします。 だから、これは別の要素が追加されます $のNUMSの配列の最後に。 そして、我々は我々のデータ型を混在させることができます。 だから私はないの配列を持つことができます 1、2、3、4、しかし1、真の、3、4、 ここで、真のブール値であり、その後、 私は別の要素の上にタックする場合 その配列には、おそらく文字列、 文字列 "5、"私はそれを行うことができます。 そして今、私の配列はだろう 真1、3、4、5です。 ワード5、整数でない5。 だから、多くの柔軟性。 柔軟性が取得します より良い、しかし、 PHPは何かをサポートしているため、 連想配列と呼ばれます。 そして、我々は一種の漠然と話しました C言語で連想配列について ハッシュテーブルの文脈において、なぜなら どのような連想配列が本当にすべてです キーを作っている程度 値のペアのマッピング。 そして、この場合、keys-- 我々は、Cからの配列に精通しています キーは、インデックス番号です。 0、1、2、3。 値は、私たちがいることを見つける何ですか ように、アレイ0、配列1、配列2、および。 だから、キーがインデックスされています、 値は その配列の場所に何ですが、 そのインデックスで指定されました。 しかし、PHPで、我々はこれを行う必要はありません 配列0、配列1、配列2の概念 もう。 私たちは今、実際の言葉を使用することができます キーを値にマップします。 だから私はこのような何かを言うことができます。 私が使用してアレイを作成することができます 次のように角括弧構文。 $ピザ=角括弧 "チーズ"とし、 二重矢印記法この種の、 8.99、「ペパロニ」、10.99-- 9.99矢印 等々。 だからここで何が起こっているの? 私は実際に何をしているのですか? 私は、キーと値のペアのマッピングを作成しています。 だからではなく、というのは、例えば、 ピザ0、ピース1、ピザ2、 私は今ピザを言うことができます チーズ、ピザのピーマン、 値を参照してください。 それらに関連付けられています。 だからここに私たちのキーが緑色です。 チーズ、ペパロニ、 野菜、バッファローチキン。 ここで作る矢印があります このキーと値のペアのマッピングです。 そして、ここに値があります そのアレイ位置で。 だから、配列0が8.99に等しいと言うようなものです。 キーは0です。 値は8.99です。 私は今、アレイチーズ、またはこの中で言うことができます ケースピザチーズ、チーズが鍵であり、 そして私が何を見つけます ピザのチーズは8.99です。 それは私が見つけた値です。 だから私は物事が好きと言うことができます。 $ピザチーズ= 7.99。 私は販売を抱えていると言います。 私がドロップするdis--たい チーズピザの価格。 または私は野菜を使用することができます ピザ条件の一部として、 または私に新しい要素を追加することができます アレイは、ちょうど私が以前に行うことができますように。 私はこれに新しい要素を追加することができます キー「ベーコン」を連想配列 および値13.49。 しかし、この種のは、問題を紹介し、 あなたは、第二のために考えてみれば。 どのように我々はこの配列を反復処理しますか? 右? Cでは、私たちは持っているだろう ループのため、一般的に、その 0から実行します 配列のサイズから1を引きました。 配列は、でn個の要素を有し、 有効なインデックスは0〜1 nはマイナスです。 だから我々は、ループのために使用することができます 一つ一つの要素をステップ。 しかし、それは本当にありません もはや場合、右? 今、私たちは、キーと値のペアを持っている場所 キーが単語でマッピング、 どのように我々は、すべての単語を反復処理しますか? まあ、幸いなことに、PHPが持っています あまりにもこれに対処するための方法、 そのため、私たちは戻ってジャンプします 秒ループします ループの四種類を導入すること foreachループと呼ばれるPHPで存在します。 そして、何foreachループがないことです それは基本的に同じ考えです。 あなたは、配列の任意の種類のためにそれを使用することができます。 しかし、それは基本的にです ループの場合と同じ考え方、 代わりに用いる以外 インデックス番号、あなただけ ここで、この奇妙な構文を持っています あなたはすべての単一の要素を呼び出します このループの目的の名前を入力します。 したがって、この場合には、 foreachの($キーとして$配列)。 基本的には、そのコメントのメモとして、 そのforeachループの内側に、 それはすべての単一の上に行くために起こっています 典型的には、$配列の要素 連想配列になるだろう、 しかし、実際には、配列の任意の種類とすることができます あなたは、PHPにしたいこと。 そして、その中のすべての時間を あなたがかもしれないforループ $配列角括弧と述べています $私は、あなただけの$キーを言うことができます。 だから、$キーは、すべてのエイリアスになります あなたのPHPの連想配列のインデックス、 ので、あなたはそのようにそれを使用することができます。 したがって、たとえば、私たちはしました 今私たちのピザの配列を得ました。 私は種類のそれを押し込めてきました そこコーナーへ 私たちは簡単な例を行うには、それを使用することができます。 私は、foreachの($ピザが言うなら $ピザ)、よく、何が起きているのでしょうか? まあ、私はすべてを反復処理するつもりです 配列$ピザの単一の要素、 そうすることで、私がコールするつもりです 私は内部のだすべての要素、 そのループのボディの、ピザを$。 だから、のようなものです スタンドで、リコール、その$ピザ スタンドで言っています $ピザ角括弧$ iが 私たちは、forループを使用していた場合、どこ この場合には$ I = 0に、から行くことができます、 $私は3を=。 我々は、キーと値のペアを持っていなかった場合 ここで、これは要素0、1、2、3になり、 そして私達は行くためにループのために使用します $ピザ0、$ピザ1、$ピザ2、 $ピザ3。 だから今ちょうど$ピザが代入されます その個々のキーの。 それでは、このプリントアウトしようとしていますか? 私は$のピザをプリントアウトしています。 私はat--見つけるつもりです 私は、私は$、$ピザをプリントアウトしたら? 右? 私はプリントアウトするつもりだ場合 ピザのi番目の要素、 何私は印刷するつもり? 私はプリントアウトするつもりです その位置での値は、右? 私たちがやっていた場合と同様に Cのコンテキストで、この、 我々は通常、当社のイテレータを使用していません 変数で、i = 0をint型、私は、3未満であります iが0、1、2、3をプリントアウトするために、++します。 私たちは、アレイ0をプリントアウトしています、 配列1、配列2、配列3。 だから、これはプリントアウト何これです。 それは価格のリストです。 8.99、9.99、10.99、11.99。 今ここに簡単なメモ。 foreachループは必ずしもありません 順序で物事をプリントアウト。 それは保証されていません。 これは通常ありません。 これは通常の順序でに基づいています その要素は、アレイに追加され、 これだけ心の中でそれを負担します。 これは、順番にではないかもしれません。 しかし、foreachループが繰り返されます 一つ一つの素子の両端 問題の配列の。 再び、この場合、 その配列は$ピザです。 私があれば、しかし、構文を変更することができます 私は、キーと値の両方を求めています。 代わりに$ピザを言っての $ピザとして、私はこれを言うことができます。 そして、あなたは私がしてきたことを見れば ここで緑色で強調表示、 それは、キーと値のペアのマッピングのように見えます。 だから、あなたがいない場合であってもyou--場合 完全にそれを行うには何が起こっているかを確認し、 あなたはおそらく推測することができます その$トッピングが起こっています この場合の鍵とし、 $価格は値になるだろう。 だから私は今、すべての要素を代入しています $のキーと値のペアとしてピザ、 そして今、私はキーを参照することができますし、 値、かもしれない便利で、 例えば、は以下の通り。 「全体」 - これは、多くのです here--「全体」に行く印刷 トッピング後、価格、および「ピザは$の費用がかかります」 私は、期間およびバックスラッシュnをプリントアウト。 だから今、私はへのアクセス権を持って再び気付きます キー、$トッピ​​ング、および値、$価格。 だから、何、これを推測することができます プリントアウトしようとしていますか? print文がたくさんあり​​ます、 一つだけ、バックスラッシュnがあり、 それは上で何かを印刷するために起こっています 単一のコード行にentire--。 私は、キーを参照することができる場合 そして、値は、ここで、 だけではなく、できることの 価格をプリントアウトするには、 私はこのような何かを印刷することができます。 「全体のチーズのピザは$ 8.99かかります。」 そして今、私はkeys--のすべてを使用しています チーズ、ペパロニ、野菜、 水牛chicken--と値。 8.99、9.99、10.99、11.99だから それはちょうど別の方法です 代わりにforeachループを行うには ちょうどあなたの値へのアクセスを与えます、 それはそれはあなたを与えるyou--与えます キーと値へのアクセス。 だから、情報を印刷します。 私はすでにそれをのカップルをやりました 別の方法は、あなたは気づいたかもしれません。 私たちは主にきた二つの機能 印刷やエコーが見られます。 そして、ほとんどすべての意図および 目的は、彼らはまったく同じです。 They're--非常に微妙ではあります でも価値はない違い 基本的にはどこにでも入るが、 あなたは、おそらく使用することができ、プリントを使用することができます 同様にエコー。 そして、それは2つだけではありません。 PHPは異なるがたくさんあり​​ます 物事をプリントアウトする方法、 それはまた、統合するための方法を持っています 文字列の真ん中に変数。 だから、Cからリコールを行います どの機能を覚えて 我々は、変数を置換するために使用することができます 物事に私たちは、プリントアウトしたいですか? おそらく、これを使用します 非常に多くの機能。 printf関数は、右? だから、これは私達が内部の前に持っていたものです 私たちのforeachループのコンテキストの。 我々は、これらの5つを持っていました 独立したprint文、 それだけだったので、 私は本当に時に知っていた方法 メッセージを印刷する方法について説明します。 私は統合する方法を知りませんでした 私のPHPコードにトッピング変数$。 まあ、私は野生推測を取った場合、 printf関数は、それが実際に働いているだろう。 printf関数は、私が使用することができます機能です PHPで、私はC言語でそれを使用することができますように だから、このようなもの、のprintf、 再び、我々はそれに慣れています。 最初の%sが置き換えられています $トッピングの値を持ちます。 二%sが置き換えられています $価格の値を持ちます。 そして私はinterpellatingよ、 これだけの空想の方法です 私がこだわっているというのが その場所に変数。 だから私はトッピングで$差し込むよどこ 赤い%sがあると$価格青の%s で、その後、私はメッセージになるだろう、 「全体のチーズのピザは$ 8.99かかります。」 私も、それを行うことができていない唯一の方法。 たぶん私はこの方法を使用するとよいでしょう。 これは、最も一般的に何実際にあります 可変質問と呼ばれます。 私はエコーを使用することができます。 我々が表示されますように私は、あまりにもプリントを使用することができます。 しかし、ここで何が起きているのでしょうか? まず第一に、私がする必要があります ドル記号をエスケープします。 私たちが実際にいたときだから、覚えています ピザの価格をプリントアウトし、 私は実際としてそれらをフォーマットされました ドル記号と金銭的な数字。 しかし、我々はまた、ドル記号を使用しています PHPの変数名を表すために、 特に、私は時 カーリーのこの方法を使用して ブレース変数 質問の方法、私が必要 それがないので、私のドル記号をエスケープします 私は、変数について話していると思います。 これは、実際に起こっています、 文字通りドル記号を印刷します。 だから、ソートのためにそれを類推 あなたが最後に見るもの。 それは実際にはしません プリントバックスラッシュnは、右? これは、改行文字を出力します。 これは、ことはないだろうis-- プリントバックスラッシュドル記号、 それだけでプリントアウトすることが起こっています ドル記号。 同じ考え。 何、エスケープシーケンス これらの事が呼び出されます。 しかし、私は致しておりませんことに注意してください %sの置換の任意の並べ替え、 私は文字通り差し込むです これらの変数です。 そしてそうthis--にここで何が起こりますか ことは、再び$ topping--の値であり、 ちょうど私たちがしてきたものと一致して そうfar--チーズの話をすることになるだろう そこにプラグイン。 $価格はどのような値になります ピザで、角括弧、チーズ、 これは8.99でした。 そして、これはまた、プリントアウトになります 「全体のチーズのピザは$ 8.99かかります。」 私が言ったように、私は使用することができます ここでは、印刷の代わりに、エコー、 そして、機能があること かなり正確に同じ。 それは同じことをプリントアウトすることになります。 それを行うための別の方法があります、 これは別の利点であります PHPの文字列を扱います。 私たちは、文字列の連結を行うことができます。 我々はあまりにも、C言語でこれを行うことができ、 strcatは呼び出された関数を使用して、 しかし、再び、私たちはしなければなりませんでした 別々の関数を呼び出します。 これは、行うには、この全体の混乱でした。 私たちはしなければならなかったstring.hのがポンドが含まれます。 それは右、生産でしたか? しかし、今私はこのドット演算子を使用することができます 一緒に文字列を連結します。 だから私は「全体」を連結することだし、 その後、どのような$トッピングの値であり、 し、別の 文字列、「ピザ費$ " して、どのような連結 $価格の値であり、 して、一番最後に私がよ 期間バックスラッシュnにタック。 そして、これはまた、希望 「全体」をプリントアウト - 再び、 我々は最初の話をしている場合 そのピザの要素array-- 「全体のチーズのピザは$ 8.99かかります。」 再び期間、バックスラッシュnを、と $トッピングと$価格置換 我々はforeachの中で指定されていた何のために キーと値のペアのマッピングなどのループ。 PHPは関数を扱うことができます。 機能は、ソートのました 我々が見たように、Cに不可欠。 変数と同様に、我々はする必要はありません 関数の戻り値の型を指定し、 それは本当に問題ではありませんので。 そして、我々は指定されていません 任意のパラメータのデータ型、 彼らは本当にないので、 問題は、我々はPHPで見てきたように。 すべての機能が導入され、 functionキーワードで。 それは我々がいることをPHPに示す方法です 私たちが話していることは機能です。 そして、我々はする必要はありません まったく主に対処します、 通訳のため、PHP 通訳、上から下に動作し、 かかわらず。 それは見ている場合は、することができます 関数呼び出し、それはよ 関数呼び出しを探しに行きます、 でもそれは、後に来る場合。 しかし、それは上から読み取ることが起こっています 底ので、指定する必要はありません、 あなたが開始するのはここです。 あなたのの1行目に開始します そこからPHPとダウン動作します。 そこでここでは作成する方法であります hard_square、呼び出される関数です。 これは明らかに1を取ります パラメータ、私は$ xを呼んでいます。 この関数は、単に複雑になります いろいろなことを説明するためのものです。 我々はまだ戻り値を持っています。 私はここでforループを使用しています。 しかし、それは基本的に、どのようにこれをです たったの$ X回$ xはに達します。 私は実際には追加されてやっています X X回0または$ゼロの$ x倍にX。 しかし、それは効果的に正確です $ xに回$ xを掛けると同じ。 私はまだ値を返すことができ、 この場合、$結果で、 私は、PHPの関数を作りました。 ここでは、コンテキストでそれを使用する方法です。 だから多分私はいくつかのPHPファイルの中です。 そこにその青に注意してください 私はPHPの区切り文字を使用しました、 アングルブラケット疑問符PHP。 それらの間でのすべてです 私が書きたいのPHP。 だから私は、明らかにget--するつもりです 私は、ユーザーに促すつもりです 私の番号、店舗与えるために 変数は、その変数$ xの店、 どのような彼らが私を与えました。 それから私はエコーするつもりです その値のhard_square、 そして、明らかに行きます 新しい行にタックします だけでなく、その後、後で私がよ そうhard_square関数を定義します 私が作るときには hard_squareするために呼び出します、 それは私が話していることを知っています。 今、私はまた、行うことができます このような何か。 これは多少異なります。 それはほぼ正確です 我々の前に見たものと同じで、 除くだけではなく、$ Xを言って そこhard_squareするためのパラメータとして、 私は、x = 10 $を言っています。 だから、これは一例です 防衛的プログラミング、 あなたのプログラムを守って 悪意のあるユーザーに対して。 これは、いくつかのエラーを行うための一つの方法であります 私たちは本当にしなかったことを確認します C.のオプションとして持っている私たちは決して可能性 何かのデフォルト値を指定します。 私たちは常に確認する必要がありました かどうか、例えば、 私たちはのGetStringへの呼び出しを行った場合、それがありました すぐに私たちの後であれば最も適切な 我々はチェックし、ことを確認 文字列かどうか ユーザーは私たちを与えたこと ヌルに等しくありません 我々が開始したくないので、 ヌル文字列での作業。 ここでは、これは方法です それを防ぐために。 ユーザーは、私たちに何かを提供していない場合 何とか、私たちは何をするつもりですか? さて、私たちは何でもちょうど言いますよ 彼らは私たちを提供していませんでした、 私たちは代わりに10をプラグインするつもりです。 だから彼らは私たちに価値を与えていない場合は、 ただ、デフォルトでは10を使用しています。ので、ここで、 私が作ってるんだということに気付きます hard_squareの呼び出し、 しかし、何のプロンプトはありません ユーザーに、右か? 私はちょうど空のコールを作ってるんです。 しかし、私の関数はhard_square パラメータを期待しています。 プリントアウトするつもりはこれは何ですか? それは右、100をプリントアウトするために起こっているのですか? ユーザーはしませんでしたので 私に何かを与えます。 そして私はちょうど仮定するつもりです その10-- 10デフォルト値です。 そして、これは印刷し うち100独自の行に。 PHPファイルがする必要はありません 単に1つのファイルです。 あなたが一緒に複数のファイルを結合することができ、 ちょうどCであなたができる方法のように 我々はC言語で行うには、一般的であったことでした ヘッダファイルを取得するための#includeはに引っ張ら。 私たちは、PHPでそれをしないでください。 私たちはするrequire_onceと呼ばれる何かをします。 そして、この全体があります 事、この__ DIR__は何ですか? それはちょうど特別です 変数、または特殊定数、 本当に、それは何を指定します あなたの現在のディレクトリです。 そしてそれが見えるようになるだろう あなたの現在のディレクトリに cs50.phpと呼ばれるファイルのための ここで、この例では、 そして、それはそのファイルを固執するだろう PHPのプログラムの先頭で、 あなたが必要を置くと仮定 PHPのファイルの先頭に行一度。 だから、PHPは主に、使用されています 排他的ではないが使用され、 Webベースのプログラミングのための言語として。 それはそれがためになったのか、本当にです。 しかし、それがいっぱいです 我々が見てきたよう言語。 私たちは、ほとんどすべてのものを見てきました それはCに似ていること行うことができ、 そしてそれはの一体を行うことができます それよりもっとたくさん。 しかし、それは完全な言語、私たちだから その中にコマンドラインのプログラミングを行うことができます。 私たちは、コマンドラインプログラムを実行することができます。 すべてのことは、コマンドを実行するために必要です PHPで書かれているラインプログラム あなたは、PHPインタプリタを持っているということです。 だから、一種の類似のです システム上のコンパイラを持ちます あなたのCコードをコンパイルしたい場合 実行可​​能ファイルにそれをオンにします。 あなたは、PHPインタプリタを持っている必要があります それはあなたのシステム上に存在します あなたがPHPファイルを解釈できるようにします。 あなたが行うと仮定すると、通常 このインタプリタはPHPと呼ばれ、 それは通常、ほとんどにバンドルされています ダウンロードやPHPのインストール あなたがオンラインで入手することができ、確かに PHPインタプリタの名前 我々は、CS50にIDEを持っています。 あなたが行うすべては、型のPHPファイルです。 そして、何あなたのプログラムの 何をするつもりは、それがあるのです 介して実行しようとして 通訳、それはです だすべてを無視しようとして ない質問の間でmark-- または、アングルブラケット疑問符のPHP、 PHPの区切り文字、およびそれをプリントアウトし、 そして、それは解釈して実行されます PHPの区切り文字の内部コード。 それでは、CS50 IDEにオーバーポップ聞かせ PHPファイルのカップルを見て、 で、PHPファイルのカップルを実行しています CS50 IDEのコマンドラインインタフェース。 そこでここでは、CS50 IDEであり、 私は自由を撮影しました hello1.phpと呼ばれるファイルを開きます。 これと明らかに、内容 ファイルがちょうどPHPの区切り文字であり、 そして、、エコーの間で(「こんにちは、世界」)。 これは非常に単純なPHPプログラムです。 私は下にスクロールするつもりです ここに私の端末ウィンドウに、 私はPHPを入力するつもりです hello1.php、エンターキーを押し。 こんにちは世界。 それは我々が何であったか、おそらくです それが何を期待し、右? のが上がると見てみましょう 別のプログラムを見てください。 hello2.php。 ほとんど同じこと、 多くはここで起こっていません。 この時間は、しかし、私が促すつもりです ユーザーは私に自分の名前を得ました。 私は再びそのreadlineの機能を使用しています。 $名= readlineの。 それはプロンプトの「あなたの名前は何ですか?」 どうやら私は印刷です それ独自の行に。 そして、そのように下の行 それは迅速になります ここで、ユーザーが自分の名前を入力することができます。 そして、私は少しを使用しています 3行目のここ可変質問 「こんにちは」をプリントアウトし、 どんなユーザタイプ。 これは、こんにちは、言うのと似ています カンマ、%sの我々はCのprintf関数を使用していた場合 それでは、行って、このプログラムを解釈してみましょう。 だからもう一度、私は下にスクロールします 私の端末ウィンドウに。 PHPのhello2.php。 お名前は何ですか? ダグ。 こんにちは、ダグ。 私はまた別のものを持っています ファイルはhello3.phpと呼ばれます。 私は自分をクリアするつもりです コントロールLでスクリーン、 私はそれを実行するつもりです。 お名前は何ですか? ダグ。 こんにちは、ダグ。 だから、動作は同じです hello2.phpが、なぜそれがhello3.phpですか? さて、ここでの違いです。 この場合、通知 そのここで1行目に、 私はない何かを持っています PHPの区切り文字の間です。 私はちょうどout--またはIを印刷しています ただ「あなたの名前は?」、入力されました PHPインタプリタはこれを見ているときに、それを PHPとして、それをどのように解釈するかは考えを持っていません、 ので、代わりに失敗し、 それはちょうどそれを吐き出すために起こっています。 だから、今3行目に私の呼び出しに気付きます readlineが、何のプロンプトはもうありません。 私は実際にto--ときつもりです PHPインタープリタはこれを見て、 それはプリントアウトになるだろう "お名前は何ですか?" そして、それはhere's--、[OK]を、ああ、見ています 他のすべてがあることを行っています ので、PHPのように解釈 この作品理由です。 私は必ずしも求めする必要はありません readlineの内部ユーザーto--、 私はちょうど外にそれを持つことができます PHPの区切り文字の 通訳を許可します ちょうど私のためにそれをプリントアウトします。 だから、実際にはありません PHPの区切り文字のいずれかのセットを持っています あなたのプログラムです。 あなたが実際にそれらのいくつかを持つことができ、 開放し、必要に応じて閉じます。 それでは、見てみましょう プログラムのカップルで、 CS50 IDEのどこ 持っていることのこの考え方を説明します 区切られたPHPの複数のセット。 [OK]をので、私は、ファイルを開きました ここadd1.phpと呼ばれます。 そして、ここで何が起こっているかがわかります。 ただ、以前のように、私が持っています 区切り文字の単一のPHPセット。 私はプリントアウトするつもりです メッセージは、「私の番号を教えてください。」 その後、私はラインを読むつもりだと 変数$ NUM1に保管します。 その後、私は再びプリントアウトするつもりです。 私の第二の数を与えます。 ユーザー、店舗からラインを読みます 彼らは、$ NUM2にで入力したものは何でも。 それらを一緒に追加し、それを保存します $和と呼ばれる変数になり、 し、 "、プリントアウト これら2つの数の和 、である "とし、質問します そこに変数$合計。 それでは、ただこれを実行してみましょう 通訳を介して、 これは我々が期待するものであることを確認します。 PHPのadd1.php。 私の数、3を教えてください。 私の第二の数、4を教えてください。 これら2つの数の和は7です。 それは3プラス4です。 OK? だから、ものすごく派手な何も。 そして今のはadd2.phpを開きましょう。 ここで、私は、PHPのカップルを持っています そこにセット区切り、右? 行1、3--ライン1とライン 3には、PHPの区切り文字がありません。 だから、ときに通訳 それらを見て、それだけです 正確に吐き出すつもり 何私はそこに入力しました。 私はどこにいるのです すべての私のプロンプトを行うこと。 ライン2と4で、我々は非常にを参照してください おなじみの$?区切り文字のPHPのソート、 ので、これらの2行があります PHPとして実行しよう。 そして、5行目で、私はこれを持っています 右ここで奇妙なことですよね? この角度ブラケット 疑問符等号。 私は少しでもさらに拡大します。 あなたは、これは私は何である見ることができます すぐそこの話、この$?=。 それはそれは非常に一般的だということが判明 我々は、PHPのセットを開く理由 区切り文字値をプリントアウトすることです。 そして、それは私たちがやろうとしているすべてです。 しかし、そのためであっても速記あります。 $?=言ってPHPの省略形です $のようなもの?合計エコーPHP NUM1とNUM2の。 だから、これはただのです そのための速記。 私はこのプログラム、PHPのadd2.phpを実行するのであれば。 私は少しズームダウンします。 私の番号、4を教えてください。 私の第二の数を教えてください。 そして、私は本当に気にしないので、 PHPのデータ型は、私が4.8を言うことができます。 これら2つの数の和は8.8です。 この関数はかなりに動作します 私たちは期待とまったく同じ、 同様に。 そして、私は1つは、よりオープンしています ここまでdice.phpと呼ばれます。 再びこれを試してみてください。 私はここで1以上を求めています また、参照dice1.php、 その角度ブラケットの質問を持っています そこに等号表記をマークし、 この場合には私がいることに気付きます 関数のrandを呼び出し、どのあなたと 期待するかもしれない乱数を生成します。 "あなたは、ロール"、それがために起こっています いくつかのランダムな数を計算、MOD 6 + 1。 だからそれは私に数をあげます 1〜6の範囲です。 MOD 6は私を与えることを忘れないでください 0〜5の範囲の数、 私はダイスロールをシミュレートしている場合は、 これは私がここでやっているものです、 私はこれらのサイコロは、0から行きたくありません 5に、私は1から6に行くサイコロをしたいです。 そして、これは取得する方法です 私1〜6の範囲です。 私はこれを2回やっています。 だから、明らかに私はローリングしています このプログラム内の2つのサイコロ。 だから、私は、画面をクリアします、 私はPHPのdice1.phpをやります。 あなたは4と2を圧延しました。 そして、私はプログラムを実行した場合 再び、あなたは5,5を圧延しました。 だから私は、プログラムを実行するたびに、 私は、異なる番号を取得しています なぜなら私はすべての時間 そう、それがオーバー始めて。 これは、新しいを生成するために起こっています 私のための乱数のセット。 我々はに慣れているのであれば Cからプログラムを実行して、 我々は./入力に慣れています プログラムの名前、右? それは我々がすべてをやった方法です C言語で私たちのプログラムのこれまでのところ。 我々としても、PHPでこれを行うことができます 何かを追加することによって呼び出されます 私たちのPHPファイルの先頭にシバン。 私はそれが愚かな言葉のようなものだ知っています。 これは、ハッシュ強打の略です。 それが最初の2文字です。 私たちは感嘆符を呼び出し忘れないでください コンピュータサイエンスの頻繁に強打。 また、鋭い強打のためかもしれません。 それを解釈するカップルの方法があります。 しかし、それは基本的に特別なソートです PHPインタプリタそのコマンドの ああ、私はしたい、として理解 あなたはこのプログラムを実行するために、 これは明らかに/ユーザー/ binに/ PHP、あります 実際にどこにPHPのインタプリタです 特に私たちのシステムに住んでいます。 だからここに何が起こりますかさit's-- インタプリタはああ、理解し、 私は、明らかに使用するようになっています このプログラムでは、このファイルを実行します。 そしてそれはあなたを可能にします ステップをスキップします PHPのsomething.phpを言ってたの。 一つの他のキャッチがあります ここで、もし私たちということです 私たちのプログラムにしたいです 予想通り、私たちの仕事 呼ばれる何かをする必要があり ファイルのパーミッションを変更。 そして、我々はgo--だろうと、私たちは少し話します ファイルアクセス許可の変更についてもう少し MVCの私たちのビデオでは、それだけにはそれで十分 これはあなたが何をする必要があるかであると言います するためにあなたの .phpファイルを実行可能。 それでは、このを見てみましょう CS50 IDEで私たちの最後の例を超えます。 だからここにIDEで、私はこの2つのファイルを持っています ではないと思われるPHPのディレクトリ .PHPと呼ばれます。 私はと呼ばれる機能を持っていますadd-- 私はADD3と呼ばれるファイルを持っています そして、ファイルdice2と呼ばれます。 それでは、素早くてみましょう 見て、ADD3を開きます。 そして、あなたは初めに、見ることができるように 私のファイルの私は右、このシバンがありますか? このハッシュマーク感嘆符。 さて、あなたはおそらくもよ 何らかの理由でそれに気づきます、 私は、構文を持っていません もうハイライト、 これは、私が以前に言及したものです これは私が私のファイル名を指定しない場合はということでした .PHP、私が利益を持っていません 構文の強調表示、もう。 このファイルは単にADD3と呼ばれています。 私は後でそれを実行できるように ADD3はない./ add3.php ./と。 それはまだだそうreason-- 罰金、それはまだ有効なPHPですが、 それがあるため、強調表示の構文ではありません このファイルはsomething.php呼び出されません。 それが唯一の本当の違いです ここで、プラスシバン。 それでは、何が起こるか見てみましょう 私が試してみて、このプログラムを実行します。 ./ ADD3、ちょうど私がCのバッシュの場合と同様の。 ./ ADD3許可が拒否されました。 これは、あなたが行っているものです あなたが忘れてしまったかどうかを確認します 変更するには、chmodコマンドを使用するには ファイルのパーミッション。 それは、通常のPHPを結局のところ ファイルだけで実行することはできません。 彼らは解釈できるが、我々はしています ここでは少し違う何かをすること。 我々はそれを実行しています。 そして、私は許可を追加する必要があります 実行の、+ xにADD3ます。chmod。 それから私は、./ ADD3を言うことができます。 私の番号を教えてください。 5,6。 これら2つの数の和は11です。 同様に、私はすでにchmodedています dice2ので、私はちょうどdice2を./入力することができ、 あなたは、1と1を圧延しました ように5,4、および圧延。 だから、かなりです PHPの構文のアイデア、右? 介して取得する多くがあり、私は知っています。 しかし、うまくいけば、あなたは今ではPHPを見てきました 本当にCからその違いはありません 本当に私たちの能力を提供します ノッチまたは2の物事を取ります。 私たちは本当に心配する必要はありません あまりにも多くの私たちは本当にありませんabout-- あまり心配する必要はあり 低レベルの詳細我々 右、Cと心配していましたか? 我々は、より高いに焦点を当てることができます レベルのものというPHP 私たちが行うとするために取ることができます それが私たちのために動作することを認めました。 だから、今、私たちに力を与え、 、CからPHPへの移行 より多くのあるプログラムを作るために 複雑で、おそらく多くの、より堅牢。 だから私は、あなたが楽しい作業と思っています PHPで、私はダグロイドです。 これはCS50です。