简体   繁体   English

PHP无法将字符串偏移量用作数组错误

[英]PHP Cannot use string offset as an array Error

I'm trying to retrieve tasks from Rembmer the Milk API. 我正在尝试从Rembmer the Milk API中检索任务。 I run this code: 我运行以下代码:

$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>";
}

but I am getting this error: 但我收到此错误:
Fatal error: Cannot use string offset as an array in C:** on line 66 致命错误:无法在第66行的C:**中将字符串偏移量用作数组
(line 66 being $duedate = $val['task']['due'];) (第66行是$ duedate = $ val ['task'] ['due'];)

This is the JSON response I am trying to decode (trying to get "name":"SOMETHING" and "due":"2011-03-17T04:00:00Z": 这是我尝试解码的JSON响应(试图获取“名称”:“ SOMETHING”和“到期”:“ 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":""}}}}}}

How to fix? 怎么修? Thanks!!!!! 谢谢!!!!!

UPDATE This is the JSON response for two or more tasks: UPDATE这是两个或多个任务的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":""}}]}}}}

Try this: 尝试这个:

$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
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM