2013-03-13 5 views
0

Я искал в Интернете несколько часов, но не могу найти достойное решение.Добавить данные в массив в определенном месте с условием

Этот случай:

Я хочу добавить некоторые данные в конкретных массивах, где ID равняется некоторой вар.

Это данные, которые необходимо добавить:

$var1 = "some data"; 
$var2 = "some other data"; 

Пример массива:

array (size=2) 
    0 => 
    array (size=9) 
     'id' => string '1' (length=1) 
     'title' => string 'title' (length=13) 
     'description' => string 'Some Description' (length=21) 
     'function' => string 'Some function' (length=23) 
     'employment' => string 'Some employment' (length=18) 
     'region' => string 'Eindhoven' (length=9) 
     'region_id' => string '1' (length=1) 
     'function_id' => string '1' (length=1) 
     'employment_id' => string '3' (length=1) 
    1 => 
    array (size=9) 
     'id' => string '1' (length=1) 
     'title' => string 'title2' (length=13) 
     'description' => string 'Some Description2' (length=21) 
     'function' => string 'Some function2' (length=23) 
     'employment' => string 'Some employment2' (length=18) 
     'region' => string 'Eindhoven' (length=9) 
     'region_id' => string '1' (length=1) 
     'function_id' => string '1' (length=1) 
     'employment_id' => string '3' (length=1) 

В другой переменной У меня есть идентификаторы. Условие было бы что-то вроде:

If ($someid == $array[0][0]['id]) { 
// Add 'ImNewData' => $var1; 
} 

В этом примере я использовал 2 массивов, но это может быть в окончательном варианте 200.

Что является самым порядочным (быстрым?) Решением для этого?

+1

Как и в 200 массивах в глубине, как в области внутри друг друга? Если это так, то вам нужна рекурсивная функция, которая принимает массив как аргумент и работает через массивы, чтобы найти то, что вы ищете. – usumoio

ответ

1

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

foreach ($array as $index => $user) { 
    if ($user['id'] == $id) { 
     $user[$index]['example_var'] = $someVar; 
    } 
} 

Что это делает, это перебирает каждый элемент массива жгутов [0], и сохраняет его элементы индекса в $ индекса. Это позволяет размещать эти значения внутри исходного массива. Значение $ user выйдет за рамки после завершения цикла foreach, поэтому вам придется добавить его непосредственно в исходный массив.

+0

Я думаю, что это ответ! Я потерялся в php, используя вещи как array_push(). Попытаемся сейчас. – Proto

+0

Вы бы хотели использовать массив push, если бы вы добавляли нового пользователя в конец массива, а не изменяли существующий. – Sturm

+0

Парень, прежде чем удалять его ответ. Но на самом деле он был прав. Я переписал ваш ответ: foreach ($ array as $ index => $ user) { if ($ user ['id'] == $ id) { $ array [$ index] ['example_var'] = $ someVar; } } – Proto

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