В переменной лежит такой массив
Array (
[1] => Array (
[1] => 4
[5] => 7
)
[2] => Array (
[1] => 2
[5] => 5
)
[3] => Array (
[1] => 2
[5] => 5
)
[4] => Array (
[1] => 6
[5] => 9
)
[5] => Array (
[1] => 6
[5] => 8
)
)
Вопрос, как можно посчитать сумма элементов с индексом [1] и с индексом [5], во вложенном массиве, без хардкода?
Пришел только 1 вариант, возможно есть вариант проще:
function array_counter($in) {
$out = [];
foreach ($in as $array){
foreach ($array as $index => $value){
if (array_key_exists($index, $out)){
$out[$index] += $value;
} else {
$out[$index] = $value;
}
}
}
return $out;
}
Пример работы функции:
$array = [
[
1 => 4,
5 => 7
],
[
1 => 2,
5 => 5
],
[
1 => 6,
5 => 9
],
];
var_dump(array_counter($array));
Вывод будет:
array(2) {
[1] =>
int(12)
[5] =>
int(21)
}
Не знаю, какой тут может быть хардкор, но самый простой способ, вероятно, будет следующим.
$sum = [1 => 0, 5 => 0];
array_walk_recursive($data, function($v, $k) use (&$sum){ $sum[$k] += $v; });
callback-метод функции array_walk_recursive
в качестве параметра получает значение элемента и его ключ. Если значение само явялется массивом, то на обработку оно не попадает, поэтому на конечную функцию всегда попадают только пары с ключом 1
или 5
с их значениями.
upd:
в случае, если набор ключей массив может меняться, необходимо проверять их наличие:
$sum = [];
array_walk_recursive($data, function($v, $k) use (&$sum){.
if(!array_key_exists($k, $sum)){
$sum[$k] = $v;
}
else{
$sum[$k] += $v;.
}
});
Есть специальный для этого метод array_sum
$a = [
[1 => 4, 5 => 5 ] ,
[1 => 3, 5 => 6 ] ,
[1 => 2, 5 => 7 ] ,
[1 => 1, 5 => 8 ] ,
[1 => 0, 5 => 9 ] ,
];
//сумма всех значений колонки 1
$b = array_sum(array_column($a , 1));
//сумма всех значений колонки 5
$c = array_sum(array_column($a , 5));
//сумма всех значений
$d = array_sum(array_map('array_sum' , $a));
print_r([
$b, $c ,$d
]);
На выход :
(
[0] => 10
[1] => 35
[2] => 45
)
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Встречались ли вам статьи где с реальными примерами был реализован blockchain ?
Здравствуйте! Я работаю с xPath для парсинга интернет-сайтовЕсть код: Код (Text):
На сайте реализована функция определения города и региона по ipТак вот, нужно чтобы у каждого города или региона выводилась определенная...