0 レビュー
2 回答
配列-php言語ページがすでに含まれている場合に関数内の言語変数にアクセスする方法は?
私のphpスクリプトには、必要な英語の文字列を含む別の en.php
ファイルが含まれています。この同じページは、ファイルを使用するhtmlページも呼び出し、 en.php
ファイルの内容を使用してファイルをフォーマットします。
このスクリプトには、含まれているスクリプトで定義されている変数を参照する関数がありますが、変数が見つからないというエラーメッセージが表示されます。関数の外部で変数を参照すると、変数は正しくアクセスされます。関数内でこれらの変数にアクセスできないのはなぜですか?
en.php
<?php
$lang_yes = 'Yes';
$lang_no = 'No';
?>
example.php
<?php
include_once('addons / assq / lang / en.php');
echo $ lang_yes;
$ q1 = convertToYesOrNoString(0);
エコー$q1;
function convertToYesOrNoString($ value){
// include_once('addons / assq / lang / en.php');
if($ value == 0){
$lang_noを返します;
} else if($ value == 1){
$lang_yesを返します;
}そうしないと{
戻る " - -";
}
}
?>
私の出力は次のとおりです:
Yes
Undefined variable: lang_no in example.php on the line in the function
en.phpを関数に直接含めようとしましたが、それも機能しませんでした。上記で実装したファイルを含めながら、関数内でこれらの変数にアクセスするにはどうすればよいですか?
わからない
0
レビュー
答え :
解決策:
定数として定義するか、引数として渡すか、関数内でグローバルとして宣言することができます:
function convertToYesOrNoString($value){
global $lang_no, $lang_yes;
//...
}
わからない
0
レビュー
答え :
解決策:
これはスコープの問題です。その変数$lang_no
は、その関数ではアクセスされません。関数定義ではなく、パラメーターとして渡す必要があります。
function convertToYesOrNoString($ value、$lang_no){//<---このように。
パラメータがたくさんあるとおっしゃっていたので、次のようにターンアラウンドを書くことができます...
あなたのen.php
<?php
//Map all those variables inside an array as key-value pair. as shown
$varArray=array('lang_yes'=>'Yes','lang_no'=>'No');
いくつかのtest.php
<?php
include('en.php');
関数convertToYesOrNoString($ varArray)
{{
extract($ varArray);
echo $ lang_yes; //「印刷」はい
エコー{-コード-1}; //「印刷」いいえ
}
convertToYesOrNoString($ varArray);
わからない
同様の質問
私たちのウェブサイトで同様の質問で答えを見つけてください。