[請益] 請問如何使用數字字串作為array的key?

看板PHP作者 (新規格)時間12年前 (2013/04/10 19:21), 編輯推噓0(0017)
留言17則, 8人參與, 最新討論串1/1
大家好 小弟目前遇到的一個問題是 我現在有許多從資料庫或純文字檔中取出的資料 內容可能不大一定, 但相同的是他們都有一樣的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

04/10 19:35, , 1F
這不是很正常嗎,有什麼問題。
04/10 19:35, 1F

04/10 20:33, , 2F
同樓上, 看不出這問題在哪
04/10 20:33, 2F

04/10 21:16, , 3F
也就是我用arsort()的時候, 數字key會消失, 但字串key會
04/10 21:16, 3F

04/10 21:17, , 4F
保留, 因此我必須用字串key @@"
04/10 21:17, 4F

04/10 21:18, , 5F
也就是我必須讓key值是字串型態
04/10 21:18, 5F

04/10 21:31, , 6F
前面全部加一個非數字符號?
04/10 21:31, 6F

04/10 21:38, , 7F
目前的解決方式就是加上"id_"... 但, 還是想知道有沒其他
04/10 21:38, 7F

04/10 21:38, , 8F
辦法呢...Q_Q
04/10 21:38, 8F

04/11 07:04, , 9F
改用物件,可以使用純數字字串當 key
04/11 07:04, 9F

04/11 07:05, , 10F
ex: $obj=json_decode('{"1":23,"2":"1aa","a":"str"}');
04/11 07:05, 10F

04/11 07:05, , 11F
只是...物件的排序會是另一個問題
04/11 07:05, 11F

04/11 09:57, , 12F
看不懂為什麼數字 key 會消失? 什麼狀況數字 key 會消失?
04/11 09:57, 12F
例如: $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)

04/11 10:25, , 13F
arsort後仍然保留index啊
04/11 10:25, 13F
對齁 我應該是把rsort跟arsort的結果搞混了 抱歉誤導大家, 等等自刪:P

04/11 10:49, , 14F
a[][]這樣如何?a[0]['id']=120 a[0]['val']=10
04/11 10:49, 14F
※ 編輯: NewSpec 來自: 42.73.168.96 (04/11 10:58)

04/11 11:13, , 15F
難怪 XD 我想說 arsort 會留 index 啊~
04/11 11:13, 15F

04/11 11:24, , 16F
拜託不要自刪,留下來給後人看看,沒什麼不好
04/11 11:24, 16F

04/11 11:25, , 17F
頂多標題或文章開始註明一下錯誤就好了
04/11 11:25, 17F
文章代碼(AID): #1HPKj7Xa (PHP)
文章代碼(AID): #1HPKj7Xa (PHP)