У меня есть два массива, один «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'];
}
}
Если я правильно понимаю, вам просто нужно пройтись по $ OperSums (Array 2) и отобразить значение, если ключ существует в $ OperID (Array 1)?
foreach ($OperSums as $id => $value) {
if (in_array($id,$OperID)) {
echo $id.' => '.$value;
}
}
Если вам действительно нужно «усечь все лишние данные», то по мере удаления сбрасывать массивы (или создавать новый массив), хотя это не кажется необходимым, если вы просто отображаете результаты?
Других решений пока нет …