Добрый день! Прошу помочь объединить два массива без увеличения количества ключей. $arrayOne = array ( array ("DATE" => "2010", "VALUE" => "50"), array ("DATE" => "2011", "VALUE" => "60"), array ("DATE" => "2012", "VALUE" => "70"), ); $arrayTwo = array ( array ("DATE" => "2010", "PRICE" => "30"), array ("DATE" => "2011", "PRICE" => "35"), array ("DATE" => "2012", "PRICE" => "40"), ); Если использовать array_merge и произвести сортировку, массив объединяется с увеличением количества ключей $array = array_merge ($arrayOne, $arrayTwo); $array = array ( array ("DATE" => "2010", "VALUE" => "50"), array ("DATE" => "2010", "PRICE" => "30"), array ("DATE" => "2011", "VALUE" => "60"), array ("DATE" => "2011", "PRICE" => "35"), array ("DATE" => "2012", "VALUE" => "70"), array ("DATE" => "2012", "PRICE" => "40"), ); Нужно чтобы массив был объединен без увеличения количества ключей, по дате, в обоих массивах даты одинаковые. $array = array ( array ("DATE" => "2010", "VALUE" => "50", "PRICE" => "30"), array ("DATE" => "2011", "VALUE" => "60", "PRICE" => "35"), array ("DATE" => "2012", "VALUE" => "70", "PRICE" => "40"), ); Заранее благодарю!
Если года могут быть в разнобой, или вот втором массиве может отсутствовать год из первого, то так: PHP: <?php $arrayOne = array ( array ("DATE" => "2010", "VALUE" => "50"), array ("DATE" => "2011", "VALUE" => "60"), array ("DATE" => "2012", "VALUE" => "70"), array ("DATE" => "2019", "VALUE" => "1000"), ); $arrayTwo = array ( array ("DATE" => "2011", "PRICE" => "30"), array ("DATE" => "2012", "PRICE" => "35"), array ("DATE" => "2010", "PRICE" => "40") ); $result = []; foreach ($arrayOne as $key => $value) { $k = array_search($value['DATE'], array_column($arrayTwo, 'DATE')); if($key !== false) { $result[$key] = [ 'DATE' => $value['DATE'], 'VALUE' => $value['VALUE'], 'PRICE' => $arrayTwo[$k]['PRICE'] ]; } } print_r($result);
Огромное Вам спасибо Попытался еще сам слепить вот что получилось <? foreach ($arrayOne as $key => $element) { $result[$key] = array ( "DATE" => $arrayOne[$key]["DATE"], "VALUE" => $arrayOne[$key]["VALUE"], "PRICE" => $arrayTwo[$key]["PRICE"], ); } print_r($result); ?> Но Ваш вариант безусловно круче --- Добавлено --- Два запроса в два разных XML файла которые необходимо объединить и вывести на графике в виде двух кривых в одинаковом периоде --- Добавлено --- Два запроса в два разных XML файла которые необходимо объединить и вывести на графике в виде двух кривых в одинаковом периоде
Нужно смотреть не по крутости, а по назначению. Достаточно ли тупого слияния или обязательно нужно интеллектуальное?
Т.е. вы не уверены, что соответствие и порядок будут соблюдаться? Тогда, да, нужно более интеллектуальное слияние. На вашем же примере array_replace_recursive должна работать на ура. --- Добавлено --- В данном случае лучше говорить «по общему элементу».