PHPについて質問です。


ユーザー定義関数の外で定義した配列を中で使えるようにしたいのですが、
配列の要素は後から増えたり減ったりするので、
関数内でglobal $b,$cなどとひとつひとつグローバル化するのは面倒です。
たとえば下記のようなスクリプトがあるとします。

$b="人力";
$c="検索";
$ar=array($b,$c);

function test()
{
return $b.$c;
}
echo test();

上記の配列$arの要素すべてをグローバル化して、
ユーザー定義関数内で使えるようにする方法おをしえてください。

Vista、IE、Firefox、最新のXampp、PHP5、 EclipsePDT2を使ってます。
以上よろしくお願いします。

回答の条件
  • 1人2回まで
  • 13歳以上
  • 登録:2010/05/22 15:40:45
  • 終了:2010/05/23 04:23:43

ベストアンサー

id:anoncom No.2

あのん回答回数16ベストアンサー獲得回数22010/05/22 16:51:49

ポイント42pt

以下のような事でよろしいでしょうか。

function test()

{

  global $ar;

  foreach($ar as $key => $value) {

    global $$key;

    $$key = $value;

  }

}

ちなみに上記の場合ですと、変数 $ar に入る配列は連想配列である必要があります。

例にある関数を変数 $ar を global変数として読み込んで実現するだけであれば


function test()

{

  global $ar;

  return implode('', $ar);

}

で出来ます。

id:taroemon

ありがとうございます。

参考になりました。

2010/05/23 04:23:22

その他の回答(1件)

id:y-kawaz No.1

y-kawaz回答回数1420ベストアンサー獲得回数2252010/05/22 16:46:24

ポイント28pt

$GLOBALSを使えば良いと思います。

http://jp.php.net/manual/ja/reserved.variables.globals.php


質問の例ですと test 関数はこんな感じでしょうか?

function test()
{
  return implode("", $GLOBALS["ar"];
}
id:taroemon

ありがとうございます。

参考になりました。

2010/05/23 04:23:18
id:anoncom No.2

あのん回答回数16ベストアンサー獲得回数22010/05/22 16:51:49ここでベストアンサー

ポイント42pt

以下のような事でよろしいでしょうか。

function test()

{

  global $ar;

  foreach($ar as $key => $value) {

    global $$key;

    $$key = $value;

  }

}

ちなみに上記の場合ですと、変数 $ar に入る配列は連想配列である必要があります。

例にある関数を変数 $ar を global変数として読み込んで実現するだけであれば


function test()

{

  global $ar;

  return implode('', $ar);

}

で出来ます。

id:taroemon

ありがとうございます。

参考になりました。

2010/05/23 04:23:22

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません