2009-04-09 6 views
0

Ich habe ein Array ($ form), die einige Informationen von $ retreives _POST:PHP: Seltsames Array-Problem - Wo ist mein Wert?

$form = $_POST['game']; 

Jetzt möchte ich mit den Werten in diesem Feld arbeiten, aber ich kann nicht irgendwie.

zum Debuggen ich diese Befehle (in der gleichen Reihenfolge, ohne zusätzliche Linien dazwischen):

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

und als Rück Ausgabe erhalte ich:

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

Irgendwelche Ideen, wo mein system_id ging? Es ist da in print_r, aber nicht in der nächsten Zeile für echo?!?

Antwort

7

Okay, fand ich die Lösung selbst (aka d'oh!)

Ich habe eine andere

var_dump($form); 

für die weitere Analyse und das ist, was ich habe:

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

Hinweis das einfache Zitat innerhalb des doppelten Zitats?

Sieht aus, als ob Sie nicht erlaubt sind die Apostroph in HTML-Formulare zu verwenden, oder sie werden in der Array-Schlüssel enthalten sein:

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

Ah, fragte ich mich, warum Ihr print_r Ausgabe zitiert hatte um die Schlüssel und mein nicht ... :) – Alnitak

-1

Es funktioniert für mich:

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

Ausgang:

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

PHP 5.2.6, auf Fedora 10 Kern

EDIT - beachten Sie, dass ein Hinweis auf die wirkliche Ursache gibt es hier . In meinem Code zeigt die print_r Ausgabe (richtig) die Array-Schlüssel ohne einfache Anführungszeichen um sie herum. Die Schlüssel des ursprünglichen Plakats taten haben Anführungsstriche um sie in der print_r Ausgabe, zeigend, dass irgendwie der tatsächliche Schlüssel die Anführungszeichen enthielt.

3

print_r() in Anführungszeichen setzen müssen nicht um Schlüssel - für das Debuggen Ich würde empfehlen, print_r komplett zu entfernen. var_export oder var_dump sind besser.

noch besser: Verwenden Sie . Es sendet die Debug-Informationen über Header, so dass es Ihre Ausgabe nicht durcheinander bringt und somit sogar mit Ajax verwendbar ist. Ausgabe wird schön mit Firebug einschließlich Syntax Färbung für Datenstrukturen angezeigt.

und es ist noch einfacher zu bedienen: einfach fb($myvar);

+0

+1 für FirePHP - ich wusste nicht, über das! – Alnitak

+0

Yapp, FirePHP ist großartig. Ich bin einfach zu faul, um es die meiste Zeit aufzunehmen. – BlaM