看板 PHP 關於我們 聯絡資訊
大家好 小弟目前遇到的一個問題是 我現在有許多從資料庫或純文字檔中取出的資料 內容可能不大一定, 但相同的是他們都有一樣的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
MOONRAKER:這不是很正常嗎,有什麼問題。 04/10 19:35
CaptainH:同樓上, 看不出這問題在哪 04/10 20:33
NewSpec:也就是我用arsort()的時候, 數字key會消失, 但字串key會 04/10 21:16
NewSpec:保留, 因此我必須用字串key @@" 04/10 21:17
NewSpec:也就是我必須讓key值是字串型態 04/10 21:18
buganini:前面全部加一個非數字符號? 04/10 21:31
NewSpec:目前的解決方式就是加上"id_"... 但, 還是想知道有沒其他 04/10 21:38
NewSpec:辦法呢...Q_Q 04/10 21:38
tyf99:改用物件,可以使用純數字字串當 key 04/11 07:04
tyf99:ex: $obj=json_decode('{"1":23,"2":"1aa","a":"str"}'); 04/11 07:05
tyf99:只是...物件的排序會是另一個問題 04/11 07:05
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)
Jerr:arsort後仍然保留index啊 04/11 10:25
對齁 我應該是把rsort跟arsort的結果搞混了 抱歉誤導大家, 等等自刪:P
noxhsu:a[][]這樣如何?a[0]['id']=120 a[0]['val']=10 04/11 10:49
※ 編輯: NewSpec 來自: 42.73.168.96 (04/11 10:58)
chrisQQ:難怪 XD 我想說 arsort 會留 index 啊~ 04/11 11:13
MOONRAKER:拜託不要自刪,留下來給後人看看,沒什麼不好 04/11 11:24
MOONRAKER:頂多標題或文章開始註明一下錯誤就好了 04/11 11:25