代码之家  ›  专栏  ›  技术社区  ›  Marcelo Cantos

奇怪的数组问题-我的值在哪里?

  •  0
  • Marcelo Cantos  · 技术社区  · 15 年前

    我有一个数组($form),它从$_post中检索到一些信息:

    $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
    )
    ##
    

    你知道我的系统在哪里吗?它在印刷品里,但不在回声的下一行????

    3 回复  |  直到 15 年前
        1
  •  7
  •   Marcelo Cantos    15 年前

    好吧,我自己找到了解决办法(A.K.A.D'Oh!)

    我又添了一个

    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]" />
    
        2
  •  3
  •   stefs    15 年前

    print_r()不会在键周围加引号-为了进行调试,我建议完全放弃print_。var_export或var_dump更好。

    更好:使用 firephp . 它通过报头发送调试信息,这样就不会破坏输出,甚至可以用于Ajax。输出与Firebug一起显示得很好,包括数据结构的语法着色。

    而且更容易使用:只是 fb($myvar);

        3
  •  -1
  •   Alnitak    15 年前

    它对我有用:

    <?
      $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上

    编辑-注意这里有一个真正原因的提示。在我的代码中 print_r 输出(正确)显示数组键,四周没有单引号。原海报的钥匙 在他们周围有引号 普林特尔 输出,显示实际键包含引号。

    推荐文章