2012-05-25 2 views
1

В настоящее время я пытаюсь имитировать часов в день с моими ключами для вставки в Монго и у меня есть что-то вдоль этих линий (упрощенный) установки:PHP - Создание JSON с помощью цифровых клавиш для Монго Вставка

for($i=0;$i<23;$i++){ 
    $returnElement["hours"]["$i"] = array(); 
    foreach($this->list_of_daily_usage_items as $item){ 
     /* @var $item DailyUsageItem */ 
     $returnElement["hours"]["$i"][$item->getLabel()] = $item->getDefaultValue(); 
    } 
    } 

с этим я создаю что-то похожее на:

[hours] => Array 
    (
     [0] => Array 
      (
       [labelOne] => 0 
       [labelTwo] => 0 
      ) 
     .... 
     [23] => Array 
      (
       [labelOne] => 0 
       [labelTwo] => 0 
      ) 

    ) 

Однако тогда, когда я нажать на JSON это преобразование, что:

"hours": [{ 
    "labelOne": 0, 
    "labelTwo": 0, 
}, { 
    "labelOne": 0, 
    "labelTwo": 0, 
}] 

Который обычно я ожидал бы; однако, когда я пытаюсь сделать эти числовые ключи, это не совсем то, что я надеюсь увидеть.

Есть ли способ достичь этого, не дожидаясь чего-то вроде _ до числа, чтобы заставить его на строку?

Спасибо

+1

Ах, PHP и его массив/словарю двойственность :) –

ответ

2

Вы можете добавить временный элемент, чтобы заставить PHP массив быть преобразован в формат JSON объект

array("_" => "removeme", 
    0 => array("hello" => 0, 
      "hell0" => 2), 
    1 => array("hello" => 0, 
      "hell0" => 2), 
    2 => array("hello" => 0, 
      "hell0" => 2)); 

это будет генерировать

{ 
    "_": "removeme", 
    "0": { 
     "hello": 0, 
     "hell0": 2 
    }, 
    "1": { 
     "hello": 0, 
     "hell0": 2 
    }, 
    "2": { 
     "hello": 0, 
     "hell0": 2 
    } 
} 

Если совместить это с neato regexp, мы просто беспокоили нас за несколько ранних систем PHP:

$finejson = preg_replace("/\"_\":\".*\",/", "", $json); 

, который дает нам это:

{ 
    "0": { 
     "hello": 0, 
     "hell0": 2 
    }, 
    "1": { 
     "hello": 0, 
     "hell0": 2 
    }, 
    "2": { 
     "hello": 0, 
     "hell0": 2 
    } 
} 
+0

хахаха да, надо любить PHP иногда .. Спасибо, я пойду по этому пути сейчас, как это все-таки лучше чем просто случайный _ infront всего. – Petrogad

Смежные вопросы