2017-11-01 23 views
1

配列値の定義とアクセスに奇妙な問題があります。私が作った弦は空に戻ります。 var_dumpを実行すると、配列の値の文字列の長さが正しいことがわかりますが、結果は ""になります。変数にアクセスしようとすると、 ""が表示されます。誰かがこの行動を説明できますか?空の文字列で定義されたPHP配列

//define the case combinations 
$cases = array(
    "<CO><VO><CO><VOP>", 
    "<VO><CLOSED><VO>", 
    "<OPEN><CO><VO>", 
    "<CO><VOP><ESCB>", 
    "<COP><VO><CO><CVN>", 
    "<STVE><ESCB>" 
); 

VARダンプ:

array(6) { [0]=> string(17) "" [1]=> string(16) "" [2]=> string(14) "" [3]=> string(15) "" [4]=> string(18) "" [5]=> string(12) "" } 

同様の問題が他のアレイで発生:同様に 'データ' プリント列下

$siteSuffix = array(
"data" => array('com','org','net','edu'), 
"probabilities" => array(1,1,1,1), //not actually used 
"name" => "siteSuffix" 

);

アレイ。

問題はこれの外部にある場合は、ここでのコードの残りの部分はgithubのリンクです:link

+0

コードの両方が私のために完全に正常に動作している、問題は何か他のものである可能性があります。 – AmritpalNagraMe

+0

私はそれがある種の文字セットの問題だと推測します。あなたのスクリプトの文字セットは何ですか? – gview

+0

また、var_dumpは文字列の長さを出力するときに空文字列ではないことを示しています。 – gview

答えて

2

あなたが実際のデータでhtmlentities(配列)<> PHPではないだろう持っているので、それがどのように見えるが、これらを実際の値/文字列と解釈します。 var_dumpの

$cases = array(
    "<CO><VO><CO><VOP>", 
    "<VO><CLOSED><VO>", 
    "<OPEN><CO><VO>", 
    "<CO><VOP><ESCB>", 
    "<COP><VO><CO><CVN>", 
    "<STVE><ESCB>" 
); 

foreach ($cases as $case){ 
    var_dump(htmlspecialchars($case)); 
} 

出力:

string(41) "<CO><VO><CO><VOP>" string(34) "<VO><CLOSED><VO>" string(32) "<OPEN><CO><VO>" string(33) "<CO><VOP><ESCB>" string(42) "<COP><VO><CO><CVN>" string(24) "<STVE><ESCB>" 
+0

そうだね、そうだよ!私はストレートjqueryテストを使用すると、私は期待しているものを得る! –

0

問題は角括弧<であると>がでそれらを印刷するには何ができるか

には、例えば、htmlspecialchars()を使用して文字に変換されますブラウザでは、各アレイ項目にecho htmlentities($str)またはhtmlspecialchars($str)を単純に使用できます。 phpコマンドラインを使用している場合は、そのようなエンコーディングは必要ありません。

は参照してください:https://www.w3schools.com/php/func_string_htmlentities.asp

関連する問題