1

コードの小さなスニペットがあり、それを機能させることができません。

$dict = array('401003' => "Test")
function getID ($tempid) {
    $id = '<span title="'.$tempid.'">'.$dict[$tempid].'</span>';
    return $id;
}
echo getID('401003');
echo $dict['401003'];

「テスト」を 2 回取得することを期待していましたが、2 回目のエコーだけが「テスト」を返しました。関数の $dict[$tempid] に問題があるようです

皆さん、私を助けてもらえますか?

4

2 に答える 2

6

これは変数 scope$dictに関係しています。関数内の変数にアクセスすることはできません。グローバルとして宣言するか、関数に渡すことでこれを回避$dictできます。次のようにリファクタリングできます。

function getID($tempId, $dict) {
    return '<span title="'.$tempid.'">'.$dict[$tempid].'</span>';
}
于 2012-05-22T13:03:50.007 に答える
3

getID に配列が表示されない場合は、それをパラメーターとして追加するか、 $dict グローバルにする必要がありますが、これは一般的に悪い考えです:

$dict = array('401003' => "Test")
function getID ($tempid) {
    global $dict;
    $id = '<span title="'.$tempid.'">'.$dict[$tempid].'</span>';
    return $id;
}
于 2012-05-22T13:04:29.380 に答える