Трабла в третьей проверке на строковый массив,результат выводится,но такой же результат почему подставляется и вместо суммы элементов массива.Я так понял что то в не верной последовательности стоит,а что именно? PHP: function massiv($a) { if (!is_array($a)) { echo 'не массив'; return; }elseif (empty($a)) { echo 'пустой массив'; return; }elseif ($a) { foreach ($a as $ttt) { is_string($ttt); echo 'строковый массив'; return; } } $summa = 0; foreach ($a as $sotr) { $summa += $sotr; } return $summa; } $b = [12,3,4,5,6,7,8,9]; $b2 = 5; $b3 = []; $b4 = ['fdfs','dfsfd']; echo massiv($b) . '</br>'; echo massiv($b2) . '</br>'; echo massiv($b3) . '</br>'; echo massiv($b4) . '</br>';
Количество элементов в массиве можно проверить функцией count, а не empty Но прежде, логично проверить существование самой переменной.
Херь какая-то если честно. Дальше третей проверки никогда не пойдет. Сама логика проверок очень слабенькая - работать будет на твоих притянутых примерах, а на деле вряд ли где сгодится. PHP: function massiv($arr) { if (empty($arr) || !is_array($arr)){ return 'Массив пустой или это не массив'; } elseif (array_sum(array_map('is_numeric', $arr)) != count($arr)){ return 'Не все элементы в массиве цифры'; } return array_sum($arr); }
@Познающий php Естественно код я дал корявый и мало осмысленный,просто для себя хотел сделать вывод всех проверок по отдельности,а с вашим вариантом все ясней ясного!Благодарю за ответ!
Кстати,а можно описание того,что конкретно делает array_map? Мое маломальское приблизительное представление - array_sum считает сумму элементов,а array_map возвращает их виде чисел что ли? В общем посыл понимаю,а технически не могу понять как работает array_map.
Единственное, что надо знать, чтобы изучать php, это ссылка - php.net Никто лучше документации, тебе это не объяснит.
Проверки типов решаются через phpшные фильтры, бро. Слушай, такое чувство, что ты решил сделать что-то типа JQuery, но на PHP, написав PHP на PHP. Мб лучше поищи задачки университетские для практики?