2013-04-17 57 views
2

相當難以解釋,但例如我有一個數組:是否有可能使用json_encode檢測密鑰類型?

$lol = array(
    'key' => 'value', 
    'key_1' => 'value 1', 
    'simple_value', 
    '0' => 'lol', 
    'key_array' => array(
     'key_in_second' => 'value_with_key_in_second', 
     'value_in_second_array', 
    ) 
); 

json_encode後,這將是

{"key":"value","key_1":"value 1","0":"lol","key_array":{"key_in_second":"value_with_key_in_second","0":"value_in_second_array"}} 

那麼是否有可能以某種方式檢測是否在php陣列有鑰匙或票據?在我的示例中,元素'simple_value', '0' => 'lol'具有相同的鍵。

+0

檢測類型。就像你所顯示的數組一樣,所有的東西都用引號包起來,所以PHP會把它讀作字符串,從而以字符串的形式傳遞給json。 –

+0

@DarylGill你不明白,我需要知道'php'中的數組是否有鍵。 – user1692333

回答

2

PHP並不在乎數字0是否在引號中。它將其存儲爲數字0,與'value_in_second_array'相同,因爲它是沒有鍵的第一個元素。

基本上,

array('0'=>'lol')相同array(0=>'lol')是相同的被array('lol');

你會看到simple_value消失了,因爲它被lol覆蓋。

2

JSON準確地反映了php。舉例來說,如果你有這樣的代碼:

<?php 
$lol = array(
    'key' => 'value', 
    'key_1' => 'value 1', 
    'simple_value', 
    '0' => 'lol', 
    'key_array' => array(
     'key_in_second' => 'value_with_key_in_second', 
     'value_in_second_array', 
    ) 
); 

print_r($lol); 

輸出將是:

Array 
(
    [key] => value 
    [key_1] => value 1 
    [0] => lol 
    [key_array] => Array 
     (
      [key_in_second] => value_with_key_in_second 
      [0] => value_in_second_array 
     ) 

) 

這裏發生了什麼是,作爲simple_value沒有鑰匙,它被指定爲0的關鍵,但後來被lol覆蓋。你也可以看到value_in_second_array是如何被自動分配的密鑰爲0.

所以,與json_encode無關,你只是從來沒有在PHP中的數據。

相關問題