Нужен совет

Тема в разделе "PHP", создана пользователем skillu, 28 сен 2009.

Статус темы:
Закрыта.
Модераторы: latteo
  1. skillu

    skillu Создатель

    Регистр.:
    12 сен 2008
    Сообщения:
    17
    Симпатии:
    1
    Вообщем задача такова: есть числовой массив. Нужно вывести Надпись "Совпадения есть" и если совпадения есть перечилить числа которые совпали. Ну соответственно если совпадений нет, то нужно вывести надпись "Совпадений нет".
    Так как я еще чайник в пхп, то вот в голову пришел только следующий код:
    PHP:
    $array = array (1,2,3,4,4,4,4,5,5,5,5,5,5,5,5,5,6,6,6,6,6,93,93);

    foreach (
    $array as $key => $val) {

        for (
    $key;
         
    $key <= count($array);
         
    $key++) 
         {
         
    $a $key+1;
             
                    
            if (
    $val == $array[$a]) {
            
    $array_new[$val] = $val;
            }


        }

    }

    if (
    count($array_new) == 0) {
    echo 
    'Совпадений нет';
    exit;
    }

    echo 
    'Совпали следующие числа:<br>';

    foreach (
    $array_new as $val) {
    echo 
    $val '<br>';
    }
    Впринципе это все работает, но хотелось бы узнать у грамотных программистов можно ли облегчить код, либо может существует вообще встроенная функция в пхп для этой задачи ? Помогите новичку плз.
    з.ы. массив просто ввел как проверочный.
     
  2. Sanuch

    Sanuch

    Регистр.:
    25 май 2009
    Сообщения:
    207
    Симпатии:
    70
    как вариант сравнивать размерность изначального массива и массива после вывполнения функции
    Перейти по ссылке
     
    skillu нравится это.
  3. skillu

    skillu Создатель

    Регистр.:
    12 сен 2008
    Сообщения:
    17
    Симпатии:
    1
    конечно спасибо за совет с описанием, но у меня чото тямы не хватает пристыкавать данную функцию к моей задачи (( мож еще варианты какие-нибудь есть ? И еще хотел бы узнать мой код, который я указал достаточно объемен для конкретной задачи ?
     
  4. antn

    antn Постоялец

    Регистр.:
    11 июл 2009
    Сообщения:
    104
    Симпатии:
    30
    PHP:
    $array = array (1,2,3,4,4,4,4,5,5,5,5,5,5,5,5,5,6,6,6,6,6,93,93);
    $c array_combine($arrayarray_fill(0count($array), 0));
    foreach(
    $array as $v)
        ++
    $c[$v];
    print_r($c);
     
  5. Sanuch

    Sanuch

    Регистр.:
    25 май 2009
    Сообщения:
    207
    Симпатии:
    70
    PHP:
    $array1 = array(1,2,3,4,4,4,4,5,5,5,5,5,5,5,5,5,6,6,6,6,6,93,93);
    $array2 array_unique($array1);
    $result array_unique(array_diff_assoc($array1$array2));
    print_r($result);
    в результате:
    Код:
    Array
    (
        [4] => 4
        [8] => 5
        [17] => 6
        [22] => 93
    )
     
    skillu нравится это.
  6. skillu

    skillu Создатель

    Регистр.:
    12 сен 2008
    Сообщения:
    17
    Симпатии:
    1
    спасибо большое, очень красивое решение, жаль не знал про существование array_diff_assoc.
     
  7. victor89

    victor89 Постоялец

    Регистр.:
    6 май 2008
    Сообщения:
    83
    Симпатии:
    14
    Советую скачать справочник функций по php Перейти по ссылке. Последний в себе содержит очень много всего по веб-разработкам.
    Удачи)
     
Статус темы:
Закрыта.