Убрать и сложить значения в массиве

Статус
В этой теме нельзя размещать новые ответы.
А если такая задачка: есть два массива:
Array ( [0] => Array ( [0] => Нолипрен [1] => 0.5 )
[1] => Array ( [0] => Индапамид [1] => 0.5 )
[2] => Array ( [0] => Пятый препарат [1] => 0.25 ) )
Array ( [0] => Array ( [0] => Нолипрен [1] => 0.75 )
[1] => Array ( [0] => Периндоприл [1] => 1.75 )
[2] => Array ( [0] => Пятый препарат [1] => 1 ) )

Надо сделать из них один массив без повторений названий, но поделив коэффициенты первого массива на коэффициенты второго, при этом если название есть в первом массиве но нет во втором то коэффициент оставить, а если есть во втором но нет в первом то коэффициент сделать 0.
 
если без повторений это брать первый попавшийся, а остальные пропускать тогда
PHP:
$array1 = Array ( 
                 Array ( 0 => "Нолипрен", 1 => 0.5 ),
                 Array ( 0 => "Индапамид", 1 => 0.5 ),
                 Array ( 0 => "Пятый препарат", 1 => 0.25 ),
                 Array ( 0 => "Нолипрен", 1 => 0.25 )
                 );


$array2 = Array ( 
                 Array ( 0 => "Нолипрен", 1 => 0.75 ),
                 Array ( 0 => "Периндоприл", 1 => 1.75 ),
                 Array ( 0 => "Пятый препарат", 1 => 1 ),
                 Array ( 0 => "Периндоприл", 1 => 1.05 )
                 );


//берём неповторяющиеся названия из первого массива
$new_array = array();
foreach($array1 as $item){
    if(!array_key_exists($item[0], $new_array))$new_array[$item[0]] = $item[1];
}

//убираем повторы из второго массива
$new_array2 = array();
foreach($array2 as $item){
    if(!array_key_exists($item[0], $new_array2))$new_array2[$item[0]] = $item[1];
}

foreach($new_array2 as $key=>$value){
    //название есть в первом и во втором, значит делим значения
    if(array_key_exists($key, $new_array)){
        $new_array[$key] /= $value;
    }
}

foreach($new_array2 as $key=>$value){
    //название есть во втором но нет в первом значит 0
    if(!array_key_exists($key, $new_array))$new_array[$key] = 0;
}



$end = array();
foreach($new_array as $key=>$value){
    $end[] = array($key, $value);
}
будет
Код:
Array
(
    [0] => Array
        (
            [0] => Нолипрен
            [1] => 0.666666666667
        )

    [1] => Array
        (
            [0] => Индапамид
            [1] => 0.5
        )

    [2] => Array
        (
            [0] => Пятый препарат
            [1] => 0.25
        )

    [3] => Array
        (
            [0] => Периндоприл
            [1] => 0
        )

)
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху