Вывести значения из одного ассоциативного массива, ключ которого существует в качестве значения в другом массиве

У меня есть два массива, один «OperID», другой «OperSums». Массив OperID содержит идентификаторы, а массив OperSums содержит идентификаторы, прикрепленные к итоговому значению, которое выглядит следующим образом:

Массив 1 (OperID)

{[0] => oper1 [1] => oper2 [2] => 3 [3] => oper4 [4] => oper5 [5] => oper6 [6] => oper7 [7] => oper8 [8] => oper9}

Array 2 (OperSums)

{["oper3"]=> float(17498.5) ["oper1"]=> float(10383.5) ["oper2"]=> float(6277) ["oper4"]=> float(10224.67) ["oper6"]=> float(3955.65) ["oper5"]=> float(4997.78) ["oper8"]=> float(11382) ["oper9"]=> float(5072.1) ["oper7"]=> float(14759) ["oper-nb3n0hah-1tueubqo"]=> float(1033.45) ["oper-50f6e4ad-9effbec7"]=> float(3058) ["oper-4f05a90b-03b379f9"]=> float(12112.5) ["oper-4db82d0b-796a3081"]=> float(621) ["oper-qxr9ryex-bsmm0g6f"]=> string(4) "0.00" ["oper-qtgjvw8y-1uqtw058"]=> float(10023) ["oper-487b885e-dbbae536"]=> string(6) "340.00" ["oper-shcuaee2-yldfdxsd"]=> float(467) ["oper-416fd551-da6937eb"]=> float(6563) ["oper-50564d75-f1da98ec"]=> string(4) "0.00" ["oper-l65tf5ex-w5qfinca"]=> float(1746) ["oper-52657816-3d6516e2"]=> float(3495) ["oper-4a82c3be-bccc185d"]=> float(0) ["oper-1f2mnwry-nfywuasi"]=> string(6) "255.95"}

Я хочу собрать только значения операторов, которые находятся в обоих массивах, и отобразить итоговые значения для каждого оператора, которые находятся внутри каждого числа с плавающей точкой в ​​массиве 2, и обрезать все дополнительные данные. Я действительно не очень хорош с ассоциативными массивами, поэтому любые указатели или советы в правильном направлении будут с благодарностью. Это в PHP, кстати.

Вот код, с которым я работаю до сих пор:

$operSums = array();

$operearnedArray[] = array(
'amount' => $row['ChargeAmount'],
'id' => $row['OperatorID']);foreach ($operearnedArray as $value) {
if($value['id'] == '' || $value['id'] == null) {
continue;
}
if(array_key_exists($value['id'], $operSums)) {
$operSums[$value['id']] += $value['amount'];
} else {
$operSums[$value['id']] = $value['amount'];
}
}

1

Решение

Если я правильно понимаю, вам просто нужно пройтись по $ OperSums (Array 2) и отобразить значение, если ключ существует в $ OperID (Array 1)?

foreach ($OperSums as $id => $value) {
if (in_array($id,$OperID)) {
echo $id.' => '.$value;
}
}

Если вам действительно нужно «усечь все лишние данные», то по мере удаления сбрасывать массивы (или создавать новый массив), хотя это не кажется необходимым, если вы просто отображаете результаты?

0

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector