看板 PHP 關於我們 聯絡資訊
※ 引述《tn801534 (踢恩)》之銘言: : $test['9911815002']=1; : $test['9911815003']=2; : echo serialize($test); : ....................................... : 以上三行簡單的程式碼在某一台主機上執行出來結果是 : a:2:{i:9911815002;i:1;i:9911815003;i:2;} : index自動被轉成整數了... 如果一個 map 的 index/value 只有"數字"的話應該都是這樣 在 serialize 的時候,會被"簡化", $test["9911815002"]=1; $test["9911815003"]=2; $test2['9911815002']=1; $test2['9911815003']=2; $test3[9911815002]=1; $test3[9911815003]=2; 以上三種情況都一樣。 結果都是 a:2:{i:9911815002;i:1;i:9911815003;i:2;} : 但正確應該是 : a:2:{s:10:"9911815002";i:1;s:10:"9911815003";i:2;} 這是 "真的結果" 還是 "手動打的" ? 一般來講,如果你的資料是 $test3["a911815002"]=1; $test3["9911815003"]=2; 就會變成 a:2:{s:10:"a911815002";i:1;i:9911815003;i:2;} 如果是 $test2["9911815002"]="a"; $test2["9911815003"]=2; 就會變成 a:2:{i:9911815002;s:1:"a";i:9911815003;i:2;} 所以請回去看看你 serialize 前後的資料各是什麼,如果不是純數字, PHP 就會用 s: aa : "bb" 表示,其中 s 代表字串, aa 代表字串長度, 括弧內 "bb" 代表內容。 : 兩台php版本相同 一台32bit 一台64bit : google大神了一下也找不出問題的所以然... : 感覺上是環境變數的問題 查一下你的程式裡面有沒有 override_function 把 serialize 換掉了。 : 請問有人遇過相同的問題嗎~~~ -- The Internet: where men are men, women are men, and children are FBI agents. -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 61.220.104.63 ※ 編輯: roga 來自: 61.220.104.63 (06/03 23:22)
tn801534:我貼的都是真的執行結果喔 ~ 06/04 03:10
tn801534:目前好像是發現不同位元的INT_MAX不同的關係 06/04 03:11
roga:32bits/64bits的作業系統 INT_MAX 都是 2147483647 .. 06/04 12:18