PHP: Garip Array Sorunu - Benim değeri nedir?

3 Cevap php

Ben $ _POST bazı bilgiler retreives bir dizi ($ form) var:

$form = $_POST['game'];

Şimdi bu dizideki değerleri ile çalışmak istiyorum, ama ben bir şekilde başarısız.

Hata ayıklama için ben (inbetween hiçbir ekstra hatları ile, aynı sırayla) bu komutları kullanılır:

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

ve iade çıkış olarak alıyorum:

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

Benim sistem_id gitmiş herhangi bir fikir? Bu yankı için bir sonraki satırda ama, print_r var değil mi?!?

3 Cevap

Tamam, ben (aka d'oh!) Çözüme kendimi buldum

Başka eklendi

var_dump($form);

daha fazla analiz için ve bu ne var:

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

Çift tırnak içindeki tek teklif edin?

Eğer html formları tek alıntı kullanmak yasak ya da dizi tuşu dahil edilecektir gibi görünüyor:

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

print_r () tuşları tırnak koymak değil - hata ayıklama için ben tamamen print_r terkediyor tavsiye ederim. var_export veya var_dump iyidir.

daha iyi: kullanım firephp. Bu başlıklar aracılığıyla debug bilgi gönderir, böylece karışıklık çıktı yukarıya değil ve böylece ajax bile kullanılabilir. çıkış veri yapıları için sözdizimi renklendirme de dahil olmak üzere kundakçı ile güzel görüntülenir.

ve kullanmak daha da kolay: sadece fb($myvar);

Bu benim için çalışıyor:

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

Çıktı:

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

PHP 5.2.6, üzerinde Fedora Core 10

EDIT - gerçek neden bir ipucu burada var olduğunu unutmayın. Benim kod print_r çıkışı (doğru) çevrelerindeki tek tırnak olmadan dizi tuşları gösterir. Orijinal web tuşları did nasılsa gerçek anahtar tırnak işaretleri içerdiğini gösteren, print_r çıktı etraflarında tırnak var.