【问题标题】:$_GET value does not work inside if condition$_GET 值在 if 条件下不起作用
【发布时间】:2014-06-02 05:27:52
【问题描述】:

我正在解析 json 数据,其中 id 用作条件来解析数据,但它在 if 条件内不起作用

 <?php

    if(isset( $_GET['id']) && isset($_GET['city']))
{
    $id=$_GET['id'];
    $city=$_GET['city'];

}

    $json = file_get_contents('../jsonfile/cities/'.$city.'.json')/deals.json?tsToken=US_AFF_0_201590_221707_0
    $json_string = json_decode($json);


    foreach($json_string->deals as $mydata)

    {

    if($mydata->id == $id) //does not work 
            {
            foreach($mydata->options[0]->details as $option)
            { 
                 echo  $option->description;
        }

$id 可以很好地回显,但它在 if 条件下不起作用,请帮帮我..... :)

【问题讨论】:

  • 它在外面工作吗?
  • 通过传递性,可以推断出$a 一定不等于$id,而您的逻辑错误是它应该以某种方式。
  • 是的,它在外面工作得很好
  • 首先检查您的值 $mydata->id 和 $id,分别打印它们。我认为价值观不匹配。还有一件事,你为 '$a' 写了它的作品,那么你的情况下的 $a 是什么?
  • 您在第 10 行还有一个非常有趣的除法运算。我很惊讶您的代码会达到您所指的 if 语句...您可以将代码减少到重现此错误的尽可能小的代码示例,并包含所有相关详细信息。就目前而言,没有任何人可以帮助您进行调试。

标签: php json get


【解决方案1】:

//试试这个

$json = file_get_contents($url);
$data = json_decode($json, TRUE);

$a = '{"a":1,"b":"test String"}';
$b = json_decode($a,true);
print_r($b);

与 json_decode 一起传递时为真,返回一个数组,您可以使用它进行比较。

【讨论】:

    【解决方案2】:

    如果 $json_string->deals 是一个数组,您可能想尝试将 if 条件更改为:if($mydata['id'] == $id)。

    虽然 json_decode 将对象作为容器返回,但其中的所有内容也不一定都是对象类型。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-07-04
      • 1970-01-01
      • 2018-09-26
      • 1970-01-01
      • 2020-11-16
      • 2021-11-16
      • 2018-10-16
      相关资源
      最近更新 更多