Сравнить элементы массива и добавить на основе ключа и значения - PullRequest
0 голосов
/ 16 мая 2018

У меня есть два таких массива:

$array_1 = Array ( [0] => 4 [1] => 6 [2] => 2 [3] => 6 [4] => 4 [5] => 10 [6] => 4 [7] => 6 [8] => 2 [9] => 2 [10] => 4 [11] => 4 [12] => 2 [13] => 2 );

$array_2 = Array ( [0] => DK [1] => GA [2] => DK [3] => GA [4] => DK [5] => GA [6] => WE [7] => VE [8] => WE [9] => VE [10] => PLA [11] => PRA [12] => PLA [13] => PRA ) ;

Теперь я хочу получить такой результат:

$dk=4+2+4=10;
$ga=6+6+10=22;
$we=4+2=6;
$ve=6+2=8;
$pla=4+2=6;
$pra=4+2;

Пояснение:

В $array_2, 'DK' существует 3 раза и key values are = 0,2 and 4. Итак, мне нужно добавить значения $array_1, имеющие key 0,2,4, и присвоить их $dk. Здесь $dk будет 4+2+4=10. Этот процесс будет таким же для всех других переменных. Как я могу это сделать??

Ответы [ 2 ]

0 голосов
/ 16 мая 2018

Это заменит цикл2 и создаст массив с суммой.
Затем выведите его (просто чтобы увидеть результат), затем я использую extract, чтобы вытащить переменные так, как вы хотите.
Но я бы предпочел оставить их в массиве

Foreach($array_2 as $key => $val){
    If(!isset($new[$val])) $new[$val] =0;
    $new[$val] += $array_1[$key];
}
Var_dump($new);
Extract($new);

https://3v4l.org/jOR7Z

0 голосов
/ 16 мая 2018

Вместо отдельного имени переменной я предлагаю вам сделать массив следующим образом

<?php
$array_1 = [4,6,2,6];
$array_2 = [ 0=> "DK", 1=>"GA", 2=>"DK", 3=>"GA"];
$newArray = [];
foreach($array_2 as $key=>$value){
  if(isset($newArray[$value])){
    $newArray[$value] +=$array_1[$key];
  }else{
    $newArray[$value] =$array_1[$key];
  }
}
print_r($newArray);
?>

Live Demo

Вывод:

Array
(
    [DK] => 6
    [GA] => 12
)

Еще одно предложение : Вместо сложного программирования старайтесь установить хорошие отношения или связывание, чтобы не получить несоответствия в записях

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...