面对数组奇怪的情况.. 我正在使用LinkedIn API来获取以两种格式返回数据的个人资料信息..
如果用户只有一个教育项目
educations=>education=>school-name
educations=>education=>date
...
如果有多个教育项目
educations=>education=>0=>school-name
educations=>education=>0=>date
...
educations=>education=>1=>school-name
educations=>education=>1=>date
...
现在我正在尝试使其保持一致并转换
educations=>education=>school-name
到
educations=>education=>0=>school-name
但是我认为应该有效的代码出错
if(empty($educations['education'][0]['school-name']))
{
$temp = array();
$temp['education'][0]=$educations['education'];
$educations = $temp;
}
“仅一个教育项目”失败,在(isset,is_array和empty)的第一行生成错误
PHP Fatal error: Cannot use string offset as an array in ...
print_r返回
[educations] => Array
(
[education] => Array
(
[id] => 109142639
[school-name] => St. Fidelis College
[end-date] => Array
(
[year] => 2009
)
)
)
答案 0 :(得分:2)
通常你会写这样的作业:
$temp = array(
"education" => array($educations['education'])
);
避免索引出现任何问题。这也可能会解决你的问题。
如果您不确定$educations['education'][0]['school-name']
的内容,可以查看每个部分:
if(isset($educations['education'], $educations['education'][0], $educations['education'][0]['school-name']))
这可行,因为isset
不的行为与正常功能相同。它以懒惰的方式接受多个参数。
答案 1 :(得分:1)
你想:
if(array_key_exists('school-name',$educations['education']))
{
$educations['education'] = array($educations['education']);
}
答案 2 :(得分:1)
今天我在申请中遇到了同样的问题。致命错误:不能在第2447行的/home/servers/bf4c/bf4c.php中使用字符串偏移作为数组
第2447行
if (!isset($time_played[$player]["started"])) {
$time_played[$player]["started"] = $time;
}
$ time_played被别处覆盖并定义为字符串。因此,请确保使用唯一的变量名称。
答案 3 :(得分:0)
如果你正在经历一个循环,那么这是一个提示,它会中断:
if( $myArray != "" ){
// Do your code here
echo $myArray['some_id'];
}