2015-04-18 2 views
-1

это мой массив:Как редактировать элементы массива mulltidimensional в php?

$array= array(3) { 
[0]=> array(3) { ["name"]=> "one" ["com"]=> "com1" ["id"]=> "1" } 
[1]=> array(3) { ["name"]=> "two" ["com"]=> "com2" ["id"]=> "2" } 
[2]=> array(3) { ["name"]=> "three" ["com"]=> "com3" ["id"]=> "3" } 

Мне нужно вешать, чтобы изменить значение имени и ком для конкретного идентификатора. Я стараюсь несколько примеров из стека вопросов:

1. Link1

foreach($array as &$value){ 
    if($value['id'] == 1){ 
     $value['name'] = 'test'; 
     $value['com'] = 'test'; 
     break; // Stop the loop after we've found the item 
    } 
} 

Но это не работает. нет ошибки, но результата нет.

2. Link 2

Опять же, сообщение об ошибке, но нет результата ...

Я также стараюсь много других примеров из стека, но подделка, и, наконец, чтобы написать вопрос ..

Купить, P

+1

В чем проблема? Что ты хочешь делать? Каков ожидаемый результат? – Rizier123

+3

Первый пример должен работать просто отлично, его просто важное значение '$ value ['id']' действительно равно 1 ' – Ghost

+0

Привет, проблема в том, что я не могу изменить значения элементов массива, я пытаюсь использовать foreach для массива loop , а затем для выбранного ID, чтобы изменить значения для клавиш name и com ... Может быть, это не возможно :) – pavlenko

ответ

1

Поскольку вы не изменив значение массива, поэтому это-не давая вам желаемый результат. Попробуйте следующее: -

foreach($array as $key => &$value){ 
    if($key == 1){ 
     $array[1]['name'] = 'test';// change value to original array 
     $array[1]['com'] = 'test'; //change value to original array 
     break; // Stop the loop after we've found the item 
    } 
} 
+0

Решенный! Tnx для ответа – pavlenko

+0

Отлично и спасибо за маркировку. :) :) :) –

+0

@anantkumarsingh Почему код OP не должен работать? Он передает значение по ссылке ?! Код OP работает отлично! – Rizier123

0
for($i=0;$i<count($array);$i++) { 
    if($array[$i]['id'] == 1) { 
     $array[$i]['name'] = 'test'; 
     $array[$i]['com'] = ''; 
     break; 
    } 
} 

print_r($array); 
0

Если вы можете изменить массив при создании, я бы рекомендовал перевести идентификатор на идентификатор ключа массива. Сделает жизнь намного проще просто сделать:

$array[1]['name'] = 'test';

В противном случае используйте цикл размещены выше и посмотреть его. (Правый тент)

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