Как правильно заменить элемент значения в массиве?

Я хочу сравнить значения ключей в массиве, и если найдено совпадение для увеличения значения элемента.

Для этого я использую код:

// var_dump $all_array array(2) { [0]=> array(6) { [0]=> string(8) "art_7880" [1]=> string(11) "Арт.7880" [2]=> string(1) "1" [3]=> NULL [4]=> string(45) "png" [5]=> int(1372269755) } [1]=> array(6) { [0]=> string(8) "art_7880" [1]=> string(11) "Арт.7880" [2]=> string(1) "1" [3]=> NULL [4]=> string(45) "png" [5]=> int(1372269874) } } // var_dump $count array(2) { [0]=> string(2) "10" [1]=> string(1) "1" } // var_dump $product array(2) { [0]=> string(10) "1372269755" [1]=> string(10) "1372269874" } $count=$_POST['count']; $product=$_POST['product']; $count_arr_products=count($product); for ($i=0; $i<=$count_arr_products; $i++){ foreach ($all_array as $keys => $elms) { if ($product[$i]==$elms[5]) { if($count[$i] > 0) { $elms[2] = $count[$i]; } else { unset($keys); } } } } 

но шаг $elms[2] = $count[$i]; не работает – в результате значение $elms[2] не изменяется …

Solutions Collecting From Web of "Как правильно заменить элемент значения в массиве?"

Вам нужно указать majke $elms elms ссылку. По умолчанию это будет копия вспомогательного массива, поэтому присвоение не будет обновлять исходный массив.

 $all_array = array(array("art_7880", "Арт.7880", "1", NULL, "png", 1372269755), array("art_7880", "Арт.7880", "1", NULL, "png", 1372269874)); $count = array("10", "1"); $product = array("1372269755", "1372269874"); $count = array("10", "1"); $product = array("1372269755", "1372269874"); $count_arr_products = count($product); for($i=0; $i<$count_arr_products; $i++){ // Use < not <= foreach ($all_array as $keys => &$elms) { // Use a reference so we can update it if ($product[$i]==$elms[5]){ if ($count[$i] > 0) { $elms[2] = $count[$i]; } else { unset($all_array[$keys]); // not unset($keys) } } } } var_dump($all_array); с $all_array = array(array("art_7880", "Арт.7880", "1", NULL, "png", 1372269755), array("art_7880", "Арт.7880", "1", NULL, "png", 1372269874)); $count = array("10", "1"); $product = array("1372269755", "1372269874"); $count = array("10", "1"); $product = array("1372269755", "1372269874"); $count_arr_products = count($product); for($i=0; $i<$count_arr_products; $i++){ // Use < not <= foreach ($all_array as $keys => &$elms) { // Use a reference so we can update it if ($product[$i]==$elms[5]){ if ($count[$i] > 0) { $elms[2] = $count[$i]; } else { unset($all_array[$keys]); // not unset($keys) } } } } var_dump($all_array); 

Вывод:

 array(2) { [0]=> array(6) { [0]=> string(8) "art_7880" [1]=> string(11) "Арт.7880" [2]=> string(2) "10" [3]=> NULL [4]=> string(3) "png" [5]=> int(1372269755) } [1]=> &array(6) { [0]=> string(8) "art_7880" [1]=> string(11) "Арт.7880" [2]=> string(1) "1" [3]=> NULL [4]=> string(3) "png" [5]=> int(1372269874) } }