За последние 24 часа нас посетили 67010 программистов и 1641 робот. Сейчас ищут 944 программиста ...

проверка типа элемента массива

Тема в разделе "PHP для новичков", создана пользователем nevajno22, 5 сен 2017.

  1. nevajno22

    nevajno22 Активный пользователь

    С нами с:
    14 янв 2012
    Сообщения:
    22
    Симпатии:
    1
    Трабла в третьей проверке на строковый массив,результат выводится,но такой же результат почему подставляется и вместо суммы элементов массива.Я так понял что то в не верной последовательности стоит,а что именно?
    PHP:
    1.     function massiv($a) {
    2.  
    3.         if (!is_array($a)) {
    4.             echo 'не массив';
    5.             return;
    6.         }elseif (empty($a)) {
    7.             echo 'пустой массив';
    8.             return;
    9.         }elseif ($a)  {
    10.             foreach ($a as $ttt) {
    11.             is_string($ttt);
    12.             echo 'строковый массив';
    13.             return;
    14.            
    15.             }
    16.  
    17.         }
    18.         $summa = 0;
    19.         foreach ($a as $sotr) {
    20.         $summa += $sotr;
    21.         }
    22.         return $summa;  
    23.        
    24.     }
    25.    $b = [12,3,4,5,6,7,8,9];
    26.    $b2 = 5;
    27.    $b3 = [];
    28.    $b4 = ['fdfs','dfsfd'];
    29.      echo massiv($b) . '</br>';
    30.      echo massiv($b2) . '</br>';
    31.      echo massiv($b3) . '</br>';
    32.      echo massiv($b4) . '</br>';
     
    _ne_scaju_ нравится это.
  2. lastdays

    lastdays Активный пользователь

    С нами с:
    27 сен 2012
    Сообщения:
    410
    Симпатии:
    74
    Количество элементов в массиве можно проверить функцией count, а не empty
    Но прежде, логично проверить существование самой переменной.
     
  3. Познающий php

    Познающий php Новичок

    С нами с:
    23 мар 2017
    Сообщения:
    381
    Симпатии:
    74
    Херь какая-то если честно. Дальше третей проверки никогда не пойдет. Сама логика проверок очень слабенькая - работать будет на твоих притянутых примерах, а на деле вряд ли где сгодится.

    PHP:
    1. function massiv($arr) {
    2.     if (empty($arr) || !is_array($arr)){
    3.         return 'Массив пустой или это не массив';
    4.     }
    5.     elseif (array_sum(array_map('is_numeric', $arr)) != count($arr)){
    6.          return 'Не все элементы в массиве цифры';
    7.     }
    8.     return array_sum($arr);
    9. }
     
    #3 Познающий php, 5 сен 2017
    Последнее редактирование: 5 сен 2017
    nevajno22 нравится это.
  4. nevajno22

    nevajno22 Активный пользователь

    С нами с:
    14 янв 2012
    Сообщения:
    22
    Симпатии:
    1
    @Познающий php
    Естественно код я дал корявый и мало осмысленный,просто для себя хотел сделать вывод всех проверок по отдельности,а с вашим вариантом все ясней ясного!Благодарю за ответ!
     
  5. nevajno22

    nevajno22 Активный пользователь

    С нами с:
    14 янв 2012
    Сообщения:
    22
    Симпатии:
    1
    Кстати,а можно описание того,что конкретно делает array_map?
    Мое маломальское приблизительное представление - array_sum считает сумму элементов,а array_map возвращает их виде чисел что ли?
    В общем посыл понимаю,а технически не могу понять как работает array_map.
     
  6. Познающий php

    Познающий php Новичок

    С нами с:
    23 мар 2017
    Сообщения:
    381
    Симпатии:
    74
    Единственное, что надо знать, чтобы изучать php, это ссылка - php.net
    Никто лучше документации, тебе это не объяснит.
     
  7. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.771
    Адрес:
    :сердА
    Проверки типов решаются через phpшные фильтры, бро.
    Слушай, такое чувство, что ты решил сделать что-то типа JQuery, но на PHP, написав PHP на PHP. Мб лучше поищи задачки университетские для практики?