• ベストアンサー

phpで言語構造というのはなんでしょうか? ar

phpで言語構造というのはなんでしょうか? arrayは言語構造だという回答をもらったのですが、言語構造とはどういうものなんですか? この図でarray()は関数と似ています。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

arrayは言語構造を構成する一部分に過ぎません。 言語構造とは、変数や関数や配列や連想配列・制御構文 などを、どうあるべきか纏めた物で、それぞれの言語によって 違いがあります。 (上記だけなら、単に文法と言っても差し支えないかもですが、  そこにプログラマがどこでどのくらい間違えるかの想定方法の違い  を加味しているのかなと思っています。) >>この図でarray()は関数と似ています。 感性の違いでしょうか?私には全く関数と似ているようには見えません。 単なる連想配列であり、あるメモリアドレスに 言語が決めた方法で格納されたデータに過ぎません。 関数というなら、引数や戻り値を示唆するものが見えないと、 似ているとは言えません。

okwaveokw
質問者

お礼

ありがとうございます なんかわかるようなわからないようなという感じです。 関数みたいな働きだったり違ったりといったところですかね

その他の回答 (2)

回答No.3

> 関数みたいな働きだったり違ったりといったところですかね list(), array(), echo , eval() , print は プログラミングしている側から見れば、関数として働いてくれているように見えるけど、 実際のPHPの内部処理としては、関数としてこれを呼び出しているのではなく、 if や whileと同じような言語処理として動かしているということでしょう。

okwaveokw
質問者

お礼

ありがとうございます

回答No.2

PHPのマニュアルに出てくる 「 以下は、このマニュアルで関数として参照されていますが、言語構造の一部とも見なされています。 list() array() echo eval() print 」 のことですね。 例えば、 $a = time(); のtimeは、引数なしで、UNIXタイムスタンプを返す関数ですが それと同じように $a = array(); でも、使い方を見ると、 引数なしで、array()を呼んで その戻り値を 変数に代入できているし arrayのあとに ( ) の括弧もあるので、 一見すると、array()という関数を呼び出しているように見えます。 しかし、 関数のだと、 その関数の入っているライブラリ(または自ファイル内)にある 関数の中身を呼び出してそれを実行しますが、 array() や list() などの一部は、 PHPの言語処理系の中で実行されているようです。 ( ifやwhileやreturnとかと同じような処理部分) 特に 、list()なんて list($a1, $a2) = explode(":", $data); みたいに、配列型となる関数の戻り値を 代入することで、 複数の引数にした変数にバラして代入できるという、 普通の関数ではありえない使い方ができますし。 また、echo や printは、 echo "aaa"; のように して、( )で 囲まなくても使えるので  通常の関数の記述ルールとは、ちょっと違っていますね。 array()も、なにか事情があって 関数でなく 言語構造として、PHPが処理しているのでしょう。

okwaveokw
質問者

お礼

ありがとうございます なんかわかるようなわからないようなという感じです。 関数みたいな働きだったり違ったりといったところですかね

関連するQ&A