2012-04-30 27 views
3

我需要在json數組中的數組鍵爲整數。現在他們是字符串。你能告訴我我的錯誤在哪裏嗎?PHP將JSON數組鍵整型爲

$i = 0; 
    while($i < 7) { 
     isset($ips[date('d', $week_start + $i * 86400)]) 
      ? $ips[(int)date('d', $week_start + $i * 86400)] = count(date('d', $week_start + $i * 86400)) 
      : $ips[(int)date('d', $week_start + $i * 86400)] = 0; 

     isset($time[date('d', $week_start + $i * 86400)]) 
      ? $time[(int)date('d', $week_start + $i * 86400)] = count(date('d', $week_start + $i * 86400)) 
      : $time[(int)date('d', $week_start + $i * 86400)] = 0; 

     $i++; 
    } 

    return json_encode(array('unique' => $time, 'impressions' => $ips)); 
+0

如果你的鑰匙是字符串,他們如何可以轉換爲整數? –

+0

這就是問題所在。無論如何可以將它們轉換爲int嗎? – user1323415

回答

2

你想要什麼是不可能的json_encodejson格式

看這2個數組

$array = array("A","B","C","D"); 
$array2 = array(2=>"A",7=>"B",11=>"C",70=>"D"); 

運行

var_dump($array,$array2); 

輸出

array 
    0 => string 'A' (length=1) 
    1 => string 'B' (length=1) 
    2 => string 'C' (length=1) 
    3 => string 'D' (length=1) 
array 
    2 => string 'A' (length=1) 
    7 => string 'B' (length=1) 
    11 => string 'C' (length=1) 
    70 => string 'D' (length=1) 

可以在PHP的都是Array

現在運行

var_dump(json_encode($array),json_encode($array2)); 

輸出

string '["A","B","C","D"]' (length=17) 
string '{"2":"A","7":"B","11":"C","70":"D"}' (length=35) 

結論

如果要設置數組鍵和那些看鍵不0啓動和連續增加將被編碼爲json對象

如果你只想陣列

var_dump(json_encode(array_values($array2))); 

輸出

string '["A","B","C","D"]' (length=17) 
2

的關鍵在於一個對象must be a string。如果你不想有字符串,那麼你必須使用從0開始的連續整數鍵,這將導致數組。

+0

浪費了所有這些逗號的帶寬 – max4ever