2009-04-09 6 views
0

私は$ _POSTからいくつかの情報をretreives配列($フォームを)している:今、私はこの配列内の値で動作するようにしたいPHP:奇妙な配列の問題 - 私の価値はどこですか?

$form = $_POST['game']; 

が、私は何とか失敗。

は、デバッグのために私は(その間の余分な線で、正確に同じ順序で)これらのコマンドを使用:

print_r($form); 
echo '#' . $form['System_ID'] . "#"; 

と返された出力として私が取得:

Array 
(
    ['Title'] => Empire: Total War - Special Forces 
    ['Genre_ID'] => 1 
    ['Type'] => Spiel 
    ['System_ID'] => 1 
) 
## 

任意のアイデアをどこSYSTEM_ID行った? print_rにはありますが、echoの次の行にはありませんか?

答えて

7

さてさて、私は自分自身が解決策を見つけた

私はさらなる分析のために別の

var_dump($form); 

を追加し、これは私が得たものである:

array(4) { 
    ["'Title'"]=> 
    string(34) "Empire: Total War - Special Forces" 
    ["'Genre_ID'"]=> 
    string(1) "1" 
    ["'Type'"]=> 
    string(5) "Spiel" 
    ["'System_ID'"]=> 
    string(1) "1" 
} 

お知らせ二重引用符の中の一重引用符?

あなたがHTMLフォームに単一引用符を使用することを許可されていないか、それが配列のキーに含まれるかのように見える:

Wrong: <input type="text" name="game['Title']" /> 
Correct: <input type="text" name="game[Title]" /> 
+0

ああ、私はFirephpため:) – Alnitak

-1

それは私の作品:

<? 
    $form['System_ID'] = 1; 
    print_r($form); 
    echo '#' . $form['System_ID'] . '#'; 
?> 

出力:

% php foo.php 
Array 
(
    [System_ID] => 1 
) 
#1# 

PHP 5.2.6、Fedora Coreの10

EDIT上 - ここに本当の原因にヒントがあることに注意してください。私のコードでは、print_rの出力(正しく)は、配列キーを一重引用符で囲まずに示しています。元のポスターののキーはで、print_rの出力に引用符があり、実際のキーに引用符が含まれていることがわかりました。 (!別名D'OH)

3

ますprint_r()キーの前後に引用符を入れていません - デバッグのため私はprint_rを一掃することをお勧めします。 var_exportまたはvar_dumpが優れています。

さらに:firephpを使用してください。それはヘッダーを介してデバッグ情報を送信するので、あなたの出力を混乱させないので、ajaxでも使用可能です。データ構造のシンタックスカラーリングを含むFirebugで出力がうまく表示されます。

、それが使いさらに簡単です:あなたますprint_r出力はキーの前後に引用符を持っていたと私はしなかった理由だけでfb($myvar);

+0

1 ...疑問に思った - 私は知りませんでしたそのことについて! – Alnitak

+0

Yapp、FirePHPは素晴らしいです。私はほとんどの時間を含めるにはあまりにも怠惰です。 – BlaM