Передача массива в качестве параметра функции в переполнении стека

Это мой массив

$sub  = array("English"=>"12","Hindi"=>"12","History"=>"12","Geography"=>"12","Mathematics"=>"12","Physics"=>"12","Chemistry"=>"12","Biology"=>"12");

Хотите передать весь этот массив в качестве параметра функции & хочу суммировать оценки (значения массива) с помощью функции

function sum_marks($sub){--Function body--
}

Я не знаю, если это правильный синтаксис для передачи массива в функцию, помогите!

-5

Решение

Попробуй это. Это создаст функцию, которая имеет ссылку на ваш массив. При изменении массива вы можете вызвать произведение функции, и она пересчитает сумму.

$array = ['English' => '12', 'Swedish' => '12'];

function arraySumCb(&$subject) {
return function () use (&$subject) {
return array_sum($subject);
};
}

$sum = arraySumCb($array);
echo $sum(); // 24
$array['Swedish'] = '15';
echo $sum(); // 27
$array['Swedish'] = '10';
echo $sum(); // 22

Редактировать: Вот как я бы это сделал.

$array = ['English' => '12', 'Swedish' => '12'];

class SumMarks {
private $_subject;
public function __construct(array &$subject = []) {
$this->_subject = &$subject;
}

public function __toString() {
return "" . array_sum($this->_subject);
}
}

$sum = new SumMarks($array);

echo $sum; // 24

$array['Swedish'] = '10';

echo $sum; // 22

Изменить: Правильное использование анонимных функций PHP

0

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

Это вы ищете?

$mySum = array_sum($sub);
3

Да, это подходящий синтаксис для передачи массива в качестве аргумента функции.

Тем не менее, вы можете рассмотреть возможность добавления объявления типа для $sub аргумент:

function sum_marks(array $sub)
{
return array_sum($sub);
}

Объявления типов позволяют функциям требовать, чтобы параметры имели определенный тип во время вызова. Если заданное значение имеет неправильный тип, то генерируется ошибка: в PHP 5 это будет исправимая фатальная ошибка, в то время как PHP 7 выдаст TypeError исключение.

Тем не менее, вы действительно, вероятно, просто хотите использовать array_sum() непосредственно.

Для справки смотрите:

1

Я не понимаю ваш вопрос, пожалуйста, задавайте с конкретным вопросом. ,
Но, может быть, это то, что вы хотите:

function sum_marks($sub){
$result = array_sum($sub);
retrun $result;
}
-1
По вопросам рекламы ammmcru@yandex.ru
Adblock
detector