PHP 板


LINE

看板 PHP  RSS
※ 引述《yongb (火系见习魔法师 )》之铭言: : 最近用PHP玩json的时候发现 : 要使用foreach的时候居然无法回圈列出 : 以下是code : <?php : 1 $json=' : 2 { : 3 "test":[ : 4 { : 5 "pid":34, : 6 "name":cat : 7 }, : 8 { : 9 "pid":35, : 10 "name":dog : 11 } : 12 ] : 13 }'; : 14 : 15 $testjson=json_decode($json); : 16 echo $testjson->test[0]->pid."<br/>"; : 17 foreach($testjson as $key =>$value){ : 18 $value[0]->pid; : 19 } : ?> : 一开始15行传到testjson是物件 : 可是当使用foreach後传到$value的时候就变成一种奇怪的状态 : 用var_dump看了一下 : 似乎是物件在阵列里面? : 更让我惊讶的是$key里面居然是test冏 : 然後pid只跑出一笔,可是不$value[0]又会错误,被那个test卡着 : 我查了一下有两个解决方式 : 1.改15行的json_decode($json,true)直接变成阵列 : 可是我又很不想用阵列 : 2.使用for回圈但看起来好丑,也不太想用 : 各位大大有别的思路吗? 小弟在此先谢过 {"key":"value"} (像我用的swift语言则是["key":"value"],是不是长得比较像阵列了?) 稍微来谈谈这个好了。 在php叫做hash table 在javascript叫做object 在python、object-c、swift之类的叫做dictionary (对,在php的书很多都告诉你这叫array,事实上却是和array混在一起使用了。 在其他的语言array和dictionary在定义型态时可是分开来的。) 因为php在「定义」上,只有object和array两种东西。 事实上key/value如果是要定义在dictionary的话,是比较接近阵列而不是物件。 因为物件的话本身还会有「方法」和「属性」这二件事。 而事实上在json格式中如果定义方法那是不对的。 定义了方法就不是json而是物件。 但是一个不能定义方法的东西,就不应该使用物件的方式来处理。 这完全就不是你想不想用……而是你必须那样使用。 (以及…事实上在php中处理array的速度比处理object还快一些) 既然那是最佳的解决问题途迳,就不要用个人的喜好来硬要用别的方式解。 否则只是累死自己而已。 --



※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 123.204.164.110
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/PHP/M.1478052939.A.E3C.html
1F:推 yongb: 感谢大大听你这样一说,尤其这句定义了方法就不是json 11/02 17:36
2F:→ yongb: 而是物件,突然不知道我前面再坚持甚麽,既然这是最佳的问 11/02 17:37
3F:→ yongb: 提解决办法 11/02 17:37
4F:推 rickysu: 这边小小勘误一下,在PHP这个叫作Associative Array 11/03 09:21
5F:→ rickysu: 另外一个以数字作为key的称为Index Array 11/03 09:21
6F:→ rickysu: 在底层Object跟Array的储存都是用Hashtable效能上 11/03 09:26
7F:→ rickysu: 是等价的,也因为如此才有办法对 Object 作 foreach 11/03 09:27
8F:推 yongb: 我得先理解hashtable... 11/03 22:49







like.gif 您可能会有兴趣的文章
icon.png[问题/行为] 猫晚上进房间会不会有憋尿问题
icon.pngRe: [闲聊] 选了错误的女孩成为魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一张
icon.png[心得] EMS高领长版毛衣.墨小楼MC1002
icon.png[分享] 丹龙隔热纸GE55+33+22
icon.png[问题] 清洗洗衣机
icon.png[寻物] 窗台下的空间
icon.png[闲聊] 双极の女神1 木魔爵
icon.png[售车] 新竹 1997 march 1297cc 白色 四门
icon.png[讨论] 能从照片感受到摄影者心情吗
icon.png[狂贺] 贺贺贺贺 贺!岛村卯月!总选举NO.1
icon.png[难过] 羡慕白皮肤的女生
icon.png阅读文章
icon.png[黑特]
icon.png[问题] SBK S1安装於安全帽位置
icon.png[分享] 旧woo100绝版开箱!!
icon.pngRe: [无言] 关於小包卫生纸
icon.png[开箱] E5-2683V3 RX480Strix 快睿C1 简单测试
icon.png[心得] 苍の海贼龙 地狱 执行者16PT
icon.png[售车] 1999年Virage iO 1.8EXi
icon.png[心得] 挑战33 LV10 狮子座pt solo
icon.png[闲聊] 手把手教你不被桶之新手主购教学
icon.png[分享] Civic Type R 量产版官方照无预警流出
icon.png[售车] Golf 4 2.0 银色 自排
icon.png[出售] Graco提篮汽座(有底座)2000元诚可议
icon.png[问题] 请问补牙材质掉了还能再补吗?(台中半年内
icon.png[问题] 44th 单曲 生写竟然都给重复的啊啊!
icon.png[心得] 华南红卡/icash 核卡
icon.png[问题] 拔牙矫正这样正常吗
icon.png[赠送] 老莫高业 初业 102年版
icon.png[情报] 三大行动支付 本季掀战火
icon.png[宝宝] 博客来Amos水蜡笔5/1特价五折
icon.pngRe: [心得] 新鲜人一些面试分享
icon.png[心得] 苍の海贼龙 地狱 麒麟25PT
icon.pngRe: [闲聊] (君の名は。雷慎入) 君名二创漫画翻译
icon.pngRe: [闲聊] OGN中场影片:失踪人口局 (英文字幕)
icon.png[问题] 台湾大哥大4G讯号差
icon.png[出售] [全国]全新千寻侘草LED灯, 水草

请输入看板名称,例如:BabyMother站内搜寻

TOP