【问题标题】:PHP Cannot use string offset as an array ErrorPHP不能将字符串偏移量用作数组错误
【发布时间】:2011-03-18 02:41:28
【问题描述】:

我正在尝试从 Rembmer the Milk API 检索任务。我运行这段代码:

$array = json_decode($content, true);

foreach($array['rsp']['tasks']['list']['taskseries'] as $keys=>$val) {
$task = $val['name'];
$duedate = $val['task']['due'];
echo $task." ";
echo $duedate."<br>";
}

但我收到此错误:
致命错误:不能在 C:** 第 66 行将字符串偏移用作数组
(第 66 行是 $duedate = $val['task']['due'];)

这是我尝试解码的 JSON 响应(尝试获取 "name":"SOMETHING" 和 "due":"2011-03-17T04:00:00Z":

{"rsp":{"stat":"ok","tasks":{"rev":"[CODE]","list":{"id":"[ID NUMBER]","taskseries": {"id":"ID","created":"DATE CREATED","modified":"DATE","name":"SOMETHING","source":"js","url":"","location_id":"","tags":[],"participants":[],"notes":[],"task":{"id":"ID","due":"2011-03-17T04:00:00Z","has_due_time":"0","added":"DATE","completed":"","deleted":"","priority":"1","postponed":"0","estimate":""}}}}}}

如何解决? 谢谢!!!!!!

更新 这是两个或更多任务的 JSON 响应:

{"rsp":{"stat":"ok","tasks":{"rev":"NUMBER","list":{"id":"ID NUMBER","taskseries":[{"id":"ID NUMBER","created":"CREATED DATE","modified":"DATE","name":"TASK 3","source":"js","url":"","location_id":"","tags":[],"participants":[],"notes":[],"task":{"id":"ID","due":"2011-03-18T04:00:00Z","has_due_time":"0","added":"DATE","completed":"","deleted":"","priority":"1","postponed":"0","estimate":""}},{"id":"ID","created":"DATE","modified":"DATE","name":"SOMETHING","source":"js","url":"","location_id":"","tags":[],"participants":[],"notes":[],"task":{"id":"ID","due":"2011-03-17T04:00:00Z","has_due_time":"0","added":"DATE","completed":"","deleted":"","priority":"1","postponed":"0","estimate":""}}]}}}}

【问题讨论】:

    标签: php arrays string offset


    【解决方案1】:

    试试这个:

    $taskSeries=$array['rsp']['tasks']['list']['taskseries'];
    if(array_key_exists('id', $taskSeries)) {
        $taskSeries=array($taskSeries);
    }
    foreach($taskSeries as $task) {
        $name=$task['name'];
        $due=$task['task']['due'];
        // do something with $name and $due here
    }
    

    【讨论】:

    • API 可以在同一个 json 代码中返回多个任务,只是不在显示的代码中......这就是我需要 foreach 循环的原因......
    • @01jayss:您能否更新显示包含多个任务的示例响应的问题?
    • 我尝试运行您的代码,但出现此错误:Notice: Undefined index: name in C:\** on line 67 and Notice: Undefined index: task in C:\** on line 68 (line 67:$name=$task['name']; line 68: $due=$task['task']['due'];...谢谢!
    • @01jayss:哎呀,我无意中插入了一个感叹号。现在可以使用了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-21
    相关资源
    最近更新 更多