作者NewSpec (新规格)
看板PHP
标题[请益] 请问如何使用数字字串作为array的key?
时间Wed Apr 10 19:21:41 2013
大家好
小弟目前遇到的一个问题是
我现在有许多从资料库或纯文字档中取出的资料
内容可能不大一定, 但相同的是他们都有一样的id值
所以, 在某些简单的情况下,
以id当作key, 用associate array来存资料就是个很直觉的作法了
但问题来了, 如果我以从档案parse出来的id字串当作key来存资料
根据PHP官方网站的说法, 只要是一个表达了标准数字格式的字串被用作array的key
那该key值就会真的被当作整数来使用
也就是
$a = array();
$a["123"] = "text";
var_dump出来就会是 array(1) { [123]=> string(4) "text" }
请问一下, 该怎麽解决这个必须用数字字串当作key值得问题呢?
谢谢大家罗^^
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 211.23.50.145
1F:→ MOONRAKER:这不是很正常吗,有什麽问题。 04/10 19:35
2F:→ CaptainH:同楼上, 看不出这问题在哪 04/10 20:33
3F:→ NewSpec:也就是我用arsort()的时候, 数字key会消失, 但字串key会 04/10 21:16
4F:→ NewSpec:保留, 因此我必须用字串key @@" 04/10 21:17
5F:→ NewSpec:也就是我必须让key值是字串型态 04/10 21:18
6F:→ buganini:前面全部加一个非数字符号? 04/10 21:31
7F:→ NewSpec:目前的解决方式就是加上"id_"... 但, 还是想知道有没其他 04/10 21:38
8F:→ NewSpec:办法呢...Q_Q 04/10 21:38
9F:→ tyf99:改用物件,可以使用纯数字字串当 key 04/11 07:04
10F:→ tyf99:ex: $obj=json_decode('{"1":23,"2":"1aa","a":"str"}'); 04/11 07:05
11F:→ tyf99:只是...物件的排序会是另一个问题 04/11 07:05
12F:→ chrisQQ:看不懂为什麽数字 key 会消失? 什麽状况数字 key 会消失? 04/11 09:57
例如:
$a = array();
$a["120"] = 10;
$a["250"] = 5;
我希望根据值排序後的结果当然是:
array(2) { ["250"]=> 5, ["120"]=> 10 }
因为PHP设定上会让数字字串转成整数, 因此先转再排序的後果就是
array(2) { [0]=> 5, [1]=> 10 }
"250", "120" 这两个理应有意义的值完全消失了, 这样的意思@@"
※ 编辑: NewSpec 来自: 211.23.50.145 (04/11 10:27)
13F:→ Jerr:arsort後仍然保留index啊 04/11 10:25
对齁
我应该是把rsort跟arsort的结果搞混了
抱歉误导大家, 等等自删:P
14F:→ noxhsu:a[][]这样如何?a[0]['id']=120 a[0]['val']=10 04/11 10:49
※ 编辑: NewSpec 来自: 42.73.168.96 (04/11 10:58)
15F:→ chrisQQ:难怪 XD 我想说 arsort 会留 index 啊~ 04/11 11:13
16F:→ MOONRAKER:拜托不要自删,留下来给後人看看,没什麽不好 04/11 11:24
17F:→ MOONRAKER:顶多标题或文章开始注明一下错误就好了 04/11 11:25