2010-02-04 11 views
8

इस कोड का परिणाम:मैं सरणी में पहली कुंजी के रूप में शून्य क्यों सेट नहीं कर सकता?

for($i = 0; $i <= 7; $i++){ 

    $eachone[] = array ('a' => '1', 'b' => '2', 'c' => '3'); 

$a[] = array($i => $eachone); 

unset($eachone); 

} 

$json_string = json_encode($a); 
echo $json_string; 

है:

[ 
    [ 
     [ 
      { 
       "a": "1", 
       "b": "2", 
       "c": "3" 
      } 
     ] 
    ], 
    { 
     "1": [ 
      { 
       "a": "1", 
       "b": "2", 
       "c": "3" 
      } 
     ] 
    }, 
    { 
     "2": [ 
      { 
       "a": "1", 
       "b": "2", 
       "c": "3" 
      } 
     ] 
    }, 
    { 
     "3": [ 
      { 
       "a": "1", 
       "b": "2", 
       "c": "3" 
      } 
     ] 
    }, 
    { 
     "4": [ 
      { 
       "a": "1", 
       "b": "2", 
       "c": "3" 
      } 
     ] 
    }, 
    { 
     "5": [ 
      { 
       "a": "1", 
       "b": "2", 
       "c": "3" 
      } 
     ] 
    }, 
    { 
     "6": [ 
      { 
       "a": "1", 
       "b": "2", 
       "c": "3" 
      } 
     ] 
    }, 
    { 
     "7": [ 
      { 
       "a": "1", 
       "b": "2", 
       "c": "3" 
      } 
     ] 
    } 
] 

आप यह कैसे पहली संख्या है, जो शून्य है लंघन है नोटिस कर सकते हैं? सवाल यह है: क्यों?

+0

PHP का कौन सा संस्करण आप उपयोग कर रहे हैं? – MANCHUCK

+0

मैं इसे 5.3.0 पर दोहराने में सक्षम हूं। यह मुद्दा json_encode के साथ निहित है - $ array को print_r'ing दिखाता है कि यह ठीक से अनुक्रमित है। –

+0

वह PHP संस्करण 5.2.6 –

उत्तर

2

आप json_encode चाहते ($ एक, JSON_FORCE_OBJECT): मैं इस सरणी मिलता है। दुर्भाग्य से, यह केवल 5.3 में जोड़ा गया है।

+1

इसके अलावा, यहां एक सरल परीक्षण केस है: php -r 'var_dump (json_encode (सरणी (सरणी (0 => 0), सरणी (1 => 1)));' स्ट्रिंग (13) "[[0], {" 1 ": 1}]" –

+0

मैं इसका परीक्षण भी नहीं कर सकता क्योंकि रैकस्पेस क्लाउड साइट्स @ 5.2.6 पर अटक गई हैं। मैं इस json_encode मुद्दे के आसपास काम करने की कोशिश करूंगा। –

+0

अच्छा, मैं एक सरणी के बजाय किसी ऑब्जेक्ट से json_encode ठीक से उपयोग करने में कामयाब रहा। समस्या यह है कि यह हर जगह तारों को आउटपुट कर रहा है और कुछ मामलों में मुझे पूर्णांक की आवश्यकता नहीं है, लेकिन मैं बाद में इसका ख्याल रखूंगा। धन्यवाद! –

0

आप अपने सरणी अनुक्रमित फ्लॉप

for($i = 0; $i <= 7; $i++) 
{ 

    $eachone[$i] = array ('a' => '1', 'b' => '2', 'c' => '3'); 

$a[$i] = array($i => $eachone); 

unset($eachone); 

} 

$json_string = json_encode($a); 
echo $json_string; 

** संपादित करें: ** मेरा लैपटॉप अगर मैं एक print_r कर ($ एक); कौन सा सेट शून्य

Array 
(
    [0] => Array 
     (
      [0] => Array 
       (
        [0] => Array 
         (
          [a] => 1 
          [b] => 2 
          [c] => 3 
         ) 

       ) 

     ) 

    [1] => Array 
     (
      [1] => Array 
       (
        [0] => Array 
         (
          [a] => 1 
          [b] => 2 
          [c] => 3 
         ) 

       ) 

     ) 

    [2] => Array 
     (
      [2] => Array 
       (
        [0] => Array 
         (
          [a] => 1 
          [b] => 2 
          [c] => 3 
         ) 

       ) 

     ) 

    [3] => Array 
     (
      [3] => Array 
       (
        [0] => Array 
         (
          [a] => 1 
          [b] => 2 
          [c] => 3 
         ) 

       ) 

     ) 

    [4] => Array 
     (
      [4] => Array 
       (
        [0] => Array 
         (
          [a] => 1 
          [b] => 2 
          [c] => 3 
         ) 

       ) 

     ) 

    [5] => Array 
     (
      [5] => Array 
       (
        [0] => Array 
         (
          [a] => 1 
          [b] => 2 
          [c] => 3 
         ) 

       ) 

     ) 

    [6] => Array 
     (
      [6] => Array 
       (
        [0] => Array 
         (
          [a] => 1 
          [b] => 2 
          [c] => 3 
         ) 

       ) 

     ) 

    [7] => Array 
     (
      [7] => Array 
       (
        [0] => Array 
         (
          [a] => 1 
          [b] => 2 
          [c] => 3 
         ) 

       ) 

     ) 

) 
+0

तकनीकी रूप से आवश्यक नहीं होना चाहिए। [] वाक्यविन्यास स्वचालित रूप से सूचकांक में वृद्धि (माना जाता है कि 0 से शुरू हो रहा है)। यदि आपके पास पहले से ही आइटम हैं और उसके लूप के लिए बस उन्हें जोड़ना वांछित काम नहीं करेगा। –

+0

यह अभी भी '0' छोड़ रहा है। –

0

यह एक हैक है लेकिन आप एक डमी तत्व तैयार कर सकते हैं।

$a = array('dummy'=>1); 
for($i = 0; $i <= 7; $i++) { 
    ... 
संबंधित मुद्दे

 संबंधित मुद्दे