【问题标题】:Convert JSON String into variables to echo out将 JSON 字符串转换为变量以回显
【发布时间】:2012-05-21 19:41:18
【问题描述】:

我有以下 JSON 字符串:

[{\"index\":0,\"date\":\" 20120030\",\"title\":\"afsa\"}]

我需要将内容放入一个变量 foreach 中。

目前为止是这样捡起来的……

 $json_data_string = $_POST['hidden_event']; // sanitize however
 $array_data = json_decode($json_data_string);

 echo $json_data_string;

我需要能够回显每一个。例如:

 foreach {
   echo $date;
   echo $title;
 }

提前感谢您的帮助。

【问题讨论】:

  • 如果你想使用 jquery ajax 和 php 来做到这一点,我会帮助你一点..
  • 太棒了。我只需要将数据放入每个语句的变量中。

标签: php foreach json


【解决方案1】:

我认为如果你想使用 jquery 来使用它,你会这样做:-

var recordList = [{\"index\":0,\"date\":\" 20120030\",\"title\":\"afsa\"}]

jQuery.each(recordList, function()
{
    alert(this.Name); // For example
    alert(this.date); // For example
});

或者像这样:-

      $.ajax({
                          type: "POST",
                          url: URL,
                          cache:false,
                          data: values,
                          dataType:'json',
                          success: function(json)
           {
                                var date = json.date;
                                alert(date);
                                }       // end success function
                        });  

【讨论】:

    【解决方案2】:
    foreach($array_data as $data) {
      echo $data->date, PHP_EOL;
      echo $data->title, PHP_EOL;
    }
    

    【讨论】:

    • 尝试将行更改为echo $data->date . "\n";echo $data->title . "\n";
    • h2oooooo 是正确的 -> 而不是 => (我纠正了我的错字)但你应该更喜欢 PHP_EOL 而不是 "\n"
    • @mathroc PHP_EOL 对于日志文件或命令行集成很有用,但在这种情况下,如果您将其输出给用户,则无论您是否使用\n\r\n(取决于服务器是Windows 还是*nix),除非使用<pre> 标记,否则它只会对用户可见,如果使用<pre> 标记,则两者都@ 987654329@ 和 \r\n 将被替换为一个新行(至少在我的 Chrome 18 上)。不过,您是对的,您不妨使用PHP_EOL,但请记住,它不会对输出的情况产生任何影响。
    • 绝对。我一直在使用(和广告)PHP_EOL 只是因为你不必考虑它
    【解决方案3】:

    您可以在 $array_data 上使用extract 函数来获取变量。

    $array_data = json_decode($json_data_string); 
    extract($array_data); 
    echo $index; 
    echo $date;
    

    【讨论】:

    • 酷,我该怎么做?
    • 我在回答中添加了示例
    【解决方案4】:

    试试var_dump (http://php.net/manual/en/function.var-dump.php),这会让您了解$array_data 的结构。如果你这样做

    echo '<pre>';
    var_dump($array_data);
    echo '</pre>';
    

    你会得到更漂亮的转储。从那里很容易看出如何echo 变量。

    【讨论】:

    • 当我这样做的时候。我只是得到 NULL
    • 这意味着你的 JSONRequest 没有发送任何东西,或者参数没有像你提到的那样命名(hidden_event)。弄清楚 JSON 请求中发生的情况很棘手,请尝试 var_dumping 整个 $_POST(也可能还有 $_GET)。您确定您使用的是 JSON POST 方法,而不是 GET?如果您有 firefox,请尝试使用 firebug,它可以让您了解这些“隐藏”的 JSON 请求会发生什么。
    • 来自手册:“如果无法解码 json 或编码数据深度超过递归限制,则返回 NULL。”你应该尝试 var_dump($json_data_string);看看它的格式是否正确
    • TBH 我没有检查json_decode 的行为方式,现在想如果 $_POST['hidden_​​event'] 不存在你会更早发现你的问题,所以我会纠正。试试 mathroc 的建议,你可能会在那里找到你的问题。当我无法使用正常的调试工具时,我发现var_dump 非常容易查看发生了什么。
    【解决方案5】:
    $json_string = $_POST['hidden_event'];
    $array = json_decode ( $json_data_string);
    
    extract ($array);
    
    echo $date;
    echo $title;
    

    【讨论】:

    • 嗯,这似乎不起作用。事实上,通过 json_decode 后我无法回显 $array?
    • 不,但是。即使我这样做:回显 $array_data 与我在问题中所拥有的内容它不起作用:s
    猜你喜欢
    • 2020-11-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-08
    • 2010-09-30
    • 2011-08-27
    相关资源
    最近更新 更多