人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

phpについて

(1)
$_GET['hoge'] = 'hoge';
$_POST['hoge'] = 'hoge';
$_SESSION['hoge'] = 'hoge';
は、それぞれ下記のようにすればセットした値が表示されますが、
function(){ echo $_GET['hoge']; }

(2)
$foo['hoge'] = 'hoge';
は、下記のようにしなければセットした値は表示しません。
function($foo){ echo $foo['hoge']; }

この時点で「違う!」と言う場合はご指摘ください。
私が知らないだけですので。

そこで質問なのですが、(1)のような配列を何と呼ぶのでしょうか?
また、上記以外にあるのでしょうか。

初期設定関連でこのようなどこからでも呼び出せる配列を
使いたいのですが、便利な方法はありませんでしょうか。

もし(2)のようにしなければならない、と言う場合は面倒なので
初期設定にもGETされたわけでもないのに
GETを使いたいのですが、こういう事をすると何か問題はあるのでしょうか。

皆さんがどうしているのかも教えて頂きたいです。

よろしくお願いします。

●質問者: worldtravel
●カテゴリ:コンピュータ ウェブ制作
✍キーワード:echo hoge PHP 配列
○ 状態 :終了
└ 回答数 : 3/3件

▽最新の回答へ

1 ● kn1967
●27ポイント

(1)PHP: スーパーグローバル - Manual

PHP の定義済み変数の中には "スーパーグローバル" というものがあります。

これは、スクリプト全体を通してすべてのスコープで使用可能な変数のことです。

関数やメソッドの内部からアクセスする際にも global $variable; などとする必要はありません。

スーパーグローバルには次のようなものがあります。

* $GLOBALS

* $_SERVER

* $_GET

* $_POST

* $_FILES

* $_COOKIE

* $_SESSION

* $_REQUEST

* $_ENV


(2)PHP: 変数のスコープ - Manual

phpの変数には、

・スーパーグローバル変数

・グローバル変数(スクリプトが終了するまで使うことができる)

・ローカル変数(関数内でのみ使うことが出来る。関数から抜ける時に使えなくなる。)

の3種類があります。


function($foo) としなければならないということは

$foo が別の場所で使われているローカルな変数ということになります。


手っ取り早くグローバルな変数にしてしまいたいという場合は、

<?php
$foo['hoge'] = '';

といった具合に事前に変数を用意しておくと良いでしょう。


ただし、グローバルは便利そうだからと、何でもかんでもグローバルにしてしまうと、

スクリプトの使いまわし時(他で使っていたものを一部コピーして使いたい場合など)に

グローバルとローカルが交じり合ってしまって訳がわからなくなるといった事態も想定されるので、

出来る限りグローバルなものは少なく抑えるようにしたほうがよろしいかと思います。


以上、簡単ですが・・・。

◎質問者からの返答

ありがとうございます。


2 ● sirotugu40
●27ポイント

(1)

スーパーグローバル変数

http://f32.aaa.livedoor.jp/~azusa/index.php?t=php&p=global

(2)

PHPでは、グローバル変数は、関数の内部で使用する場合、関数の内部でグローバルとして宣言する必要があります。

http://www.res-system.com/weblog/item/438


以下のようにグローバル変数を明示的に書いてあげる必要があります。

function(){ global $foo; echo $foo['hoge']; }

◎質問者からの返答

ありがとうございます。


3 ● TheFool
●26ポイント

(1)

定義済の変数

http://www.php.net/manual/ja/reserved.variables.php

配列に限りませんが。


(2)

http://www.php.net/manual/ja/language.variables.scope.php

変数には見える範囲があり、関数の中からは外にある変数は見えません。

PHP では グローバル、スーパーグローバル、ローカル の三つのスコープがあり、定義済みの変数はスーパーグローバルであるため、

どこからでもアクセスすることができます。

global キーワードを使うことでグローバルスコープの変数を参照することができます。

<?php
$foo['hoge'] = 'hoge' ;

function f() 
{
 global $foo ;
 echo $foo['hoge'] ;
} 

f();
?>
◎質問者からの返答

ありがとうございます。

毎回 function f($foo) と書いていました。 --;

global $foo ;

これで良いのですね。

こんな事も知らずにphpをさんざん使っているとは...

皆さん、ありがとうございました。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ