2014-12-03 1 views
0

У меня есть этот массив:Петли массив корыта PHP и вставить ключ => значения в заданном положении

[ 
    {"key": 1, "title": "Animalia", "expanded": true, "folder": true, "children": [ 
     {"key": 2, "title": "Chordate", "folder": true, "children": [ 
      {"key": 3, "title": "Mammal", "children": [ 
       {"key": 4, "title": "Primate", "children": [ 
        {"key": 5, "title": "Primate", "children": [ 
        ]}, 
        {"key": 6, "title": "Carnivora", "children": [ 
        ]} 
       ]}, 
       {"key": 7, "title": "Carnivora", "children": [ 
        {"key": 8, "title": "Felidae"} 
       ]} 
      ]} 
     ]} 
    ]} 
] 

Я хочу, чтобы петля корыта массива и когда «ключ» составляет заданное число (скажем, 5) Я хочу вставить «selected»: true key => value

Есть ли такая возможность?

+0

Прежде всего, это недействительный PHP-код. Является ли это JSON из javascript? – mudasobwa

+0

Да, это json-массив – rosuandreimihai

+0

, это недействительный JSON. – vaso123

ответ

1

Ну просто сделать строку JSON на действительный массив PHP с $ туАггау = json_decode (JSONString)

Тогда вы могли бы получить доступ к точке вы хотите, как array_push ($ туАггау [0] [ "1"], " MyValue ")

мне потребуется точное положение, где вы хотите добавить какой тип значения, чтобы дать вам лучший намек ... :-)

Отредактировано с рабочим кодом

вы имеете делать recu rsive поиск по вашей структуре JSON, чтобы найти ваше значение и установить значение, которое вам нужно ... Я написал вам короткую функцию php, которая делает этот трюк ...

Как вы видите, функция принимает параметры и дает вы обратно готовый массив PHP для дальнейшего использования этого ... Просто назовите его как descriped ниже ....

Пример использования

$myArray = json_decode($myJSON, true); 
$myArray = setSelectedForKey($myArray, "6"); 
echo(json_encode($myArray)); 

После функции вам необходимо:

function setSelectedForKey($searchArray, $searchKey) { 
     for ($i = 0; $i < count($searchArray); $i++) { 
      if ($searchArray[$i]["key"] == $searchKey) { 
       $searchArray[$i]["selected"] = true; 
      } else { 
       if (is_array($searchArray[$i]["children"])) { 
        $searchArray[$i]["children"] = setSelectedForKey($searchArray[$i]["children"], $searchKey); 
       } 
      } 
     } 
     return $searchArray; 
    } 
+0

Это как раз проблема, позиция может быть где угодно :( – rosuandreimihai

+0

Хорошо, дайте мне немного времени ... Я отредактирую свое сообщение с правильным кодом для вашей проблемы ... Мне нужно будет проверить мой код дома сегодня вечером, чтобы решить эту проблему ...:) –

+0

Было бы неплохо, если бы вы проголосовали за мою работу :-P :-) весело провести время с ней –

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