Если массив пустой выводиться сообщение "Ошибка в параметре, оно должно быть числом!". Если в массиве 'Слово' вновь выводится "Ошибка в параметре, оно должно быть числом!". Если в массиве все числа, то выводится сумма чисел массива. Как дописать эту функцию чтобы она проверяла массив на наличие переменных string, false, float и выводилась бы только сумма целых чисел? Массив, например такой $arr = [10, 20, 11.5, 'Слово', false];
<?php
$arr = [10, 20, 11.5, 'Слово', false];
function control($data)
{
if (empty($data))
{
echo 'Ошибка в параметре, оно должно быть числом!';
return;
}
$sum = 0;
foreach ($data as $value)
$sum += $value;
return $sum;
}
echo control ($arr);
?>
Я бы сделал вот так:
<?php
$arr = [10, 20, 11.5];
function control($data)
{
$filtered = array_filter($data, function($v) {
return is_int($v);
});
if (count($data) < 1 || count($data) != count($filtered)) {
echo 'Все параметры должны быть целыми числами';
return;
}
return array_sum($filtered);
}
echo control($arr);
Делаете аналогичную проверку в foreach
function control($data)
{
if (empty($data))
{
echo 'Ошибка в параметре, оно должно быть числом!';
return;
}
$sum = 0;
foreach ($data as $value) {
if (!is_int($value)) {
echo 'Ошибка в параметре, оно должно быть числом!';
return;
}
$sum += $value;
}
return $sum;
}
<?php
function control($data) {
$clear_data = filter_var_array(['numbers' => $data], [
'numbers' => [
'filter' => FILTER_VALIDATE_INT,
'flags' => FILTER_REQUIRE_ARRAY
]
]);
$clear_data = array_filter($clear_data['numbers'], 'strlen');
if(empty($clear_data) || count($clear_data) < count($data)) {
return 'Ошибка в параметре, оно должно быть числом!';
}
return array_sum($clear_data);
}
control([10, 20, 11.5, 'Слово', false]); // Ошибка
control([10, 20, 11.5]); // Ошибка
control([10, 20]); // 30
$arr = [10, 20, 11.5, 'Слово', false];
function arrayNumericalSum($arr){
if(!empty($arr) && array_sum(array_map('is_numeric', $arr)) == count($arr)){
return array_sum($arr);
}else{
return false;
}
}
if(($sum = arrayNumericalSum($arr))){
echo $sum;
}else{
echo 'Ошибка в параметре, оно должно быть числом!';
}
Если нужно проверить и на числа с плавающей точкой (точнее выдавать ошибку если в массиве что то кроме int) то замените is_numeric
на is_int
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Какие существуют виды рекламных бордов и как выбрать подходящий?
Не понимаю, почему, если в отправке не указать путь к файлу, то будет ошибка 404?
Есть три радиокнопки и кнопка submit в контроллере есть условия типа если выбран такой то чекбокс,то выводи из базы данных цену товаров диапазоне...
Я сделал пагинацию, которая работает для главной страницы (indexphp), где я вывожу посты всех рубрик (cat)