stophin 2018-09-14 11:30 采纳率: 33.3%
浏览 688
已采纳

请问php中当array只有一个元素时是不是退化成了Object?

我现在使用simplexml_load_file将xml配置文件转化为array。xml中有一个元素可能为这样:

 <element id="1"><item id="10"/></element>

实际使用时可能会有多个element配置可能也只有一个。使用foreach进行遍历。
经测试发现,当element有多个时,foreach是正常的,每个element都能遍历一次。
但是当element只有一个时,xml2arry结果貌似就会将element变为一个Object,
foreach遍历时,会分别遍历@Attribute和item两个element的内部对象,而不是
预期额遍历element一次。但是此时使用is_array判断element时,显示为true,
然而使用json_encode或者print_r打印出来又的确显示是没有最外部的[]括号,表明它
并不是一个array。
作为一个外行刚进入php的人来说不是太懂,请问有没有人能帮忙解释一下

补充:
使用simplexml_load_file之后,使用json_decode(json_encode((array)$xml), true);
后面true转换为了关联数组(惑)?不懂什么是关联数组,可以解释一下吗

  • 写回答

4条回答 默认 最新

  • threenewbee 2018-09-15 03:29
    关注

    当array只有一个元素时是不是退化成了Object
    不会,一个元素的Object还是这个数组本身。而不是其中那唯一的元素。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
  • 忆之乜 2018-09-15 08:42
    关注

    依然是数组,即时是空,也依然是数组

    评论
  • 忆之乜 2018-09-15 08:50
    关注

    关联数组指的是 数组的下标是你自己分配,有意义的 比如:
    $info=array(
    'name'=>'张三',
    'age'=>10,
    'sex'=>'男'
    )
    索引数组的下标一般是自然下标 例如:
    $num=array(1,2,3,4);

    $num[0]=1;
    $num[1]=2;
    $num[2]=3;

    评论
  • 贝吉塔不爱算法 博客专家认证 2018-09-21 07:56
    关注

    还是array 不是Object

    评论
查看更多回答(3条)

报告相同问题?

问题事件

  • 已采纳回答 1月24日

悬赏问题

  • ¥20 Java的kafka错误unknowHostException
  • ¥20 gbase 8a没有lisense,需要获取一个lisense
  • ¥15 前端的3d饼图不知道用啥框架做的
  • ¥15 三个问答题,很简单,都是关于网络安全
  • ¥15 算法问题 斐波那契数 解答
  • ¥15 VS2019 SPY++ 获取句柄操作
  • ¥15 Facebook 获取广告
  • ¥15 PID算法的输出结果如何转换成pwm
  • ¥15 java文本解密算法
  • ¥15 有没有办法等sql查询完成后执行下一步操作