作者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