PHPで次のスクリプトを作成してください。


下記のような配列があるとします。
$i = array('a','b','c');

この配列の要素に$をつけた変数をユーザー定義関数の中でグローバルにさせる方法を教えてください。つまり下記のような形を実現したいです。
function hoge(){
global $a;
global $b;
global $c;
}

ただし、配列の要素が増減したら関数の中でグローバル化される変数も自動的に増減するようにしてください。

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

回答の条件
  • 1人2回まで
  • 13歳以上
  • 登録:2010/05/23 04:37:23
  • 終了:2010/05/23 12:06:42

ベストアンサー

id:y-kawaz No.1

y-kawaz回答回数1419ベストアンサー獲得回数2252010/05/23 06:08:19

ポイント60pt
<?php
error_reporting(E_ALL ^ E_NOTICE);

$a = "A";
$b = "B";
$c = "C";
$d = "D";
$i = array("a", "b", "c");

function hoge() {
        global $i;
        foreach($i as $v) {
                global $$v;
        }
        echo "$a,$b,$c,$d,";
}

hoge();

//↓出力結果
//A,B,C,,
?>

$i で指定された $a,$b,$c だけが global された状態になり、global されていない $d は未定義になっているのが分かるかと。

id:taroemon

ご回答ありがとうございます。

うまくいきました。

2010/05/23 12:06:28
  • id:tobeoscontinue
    グローバルではありませんがcompactとextractも便利です。
    <?php
    $a = "A";
    $b = "B";
    $c = "C";
    $d = "D";
    $i = compact("a", "b", "c");

    function hoge() {
    extract($GLOBALS['i']);
    echo "$a,$b,$c,$d,";
    }

    hoge();

    ?>

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

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

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

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