За последние 24 часа нас посетили 20056 программистов и 1722 робота. Сейчас ищут 1604 программиста ...

Массив

Тема в разделе "Сделайте за меня", создана пользователем sin313, 20 май 2014.

  1. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    Да у Your в принципе код медленный хотя бы потому что там на каждой итерации вызываются функции, а вызов даже пустой функции это уже несколько микросекунд.
    Просто xdebug вносит огромный диссонанс во время выполнения, и если он включен, пользоваться microtime(true) весьма опрометчиво в принципе. Такие вещи надо оговаривать. Ну и говорить что за комп у кого. Может Your делал свой тест на машине с Атом процессором и с включенным xdebug.

    Вот какие у меня получаются результаты, если не требуется сохранять ключи:
    Код (PHP):
    1. function showtime($totals) {
    2.   foreach ($totals as $algo => $tryes) {
    3.     foreach ($tryes as $tk => $total) {
    4.       //частенько попадаются странные значения 0.(0), попробую их отсеять
    5.       foreach ($total as $k => $v) {
    6.         if ($v < 0.000000001) {
    7.           unset($total[$k]);
    8.         }
    9.       }
    10.       printf("$algo попытка " . ($tk + 1) . ": минимальное %.10f мкс, среднее %.10f мкс<br>\n", min($total) * 1000000, array_sum($total) * 1000000 / count($total));
    11.     }
    12.   }
    13. }
    14.  
    15. $totals = [];
    16.  
    17. /// GLOBAL ITER START
    18. $globaliter = 3;
    19. for ($globalitercounter = 0; $globalitercounter < $globaliter; $globalitercounter++) {
    20.   $array = array(1, 1, 2, 3, 4, 5, 5, 6, 4, 1, 1, 20, 30, 40, 50, 50, 60, 40, 4, 5, 5, 6, 4, 1, 1, 20, 30, 40);
    21.   $start = 0.0;
    22.   $stop = 0.0;
    23.   $iter = 1000;
    24.   $itercounter = 0;
    25.  
    26. ///////////////////////////////////////////////////////////////////////////////////////////////////////////////
    27.  
    28.   $algo = 'Felix';
    29.   $total = [];
    30.   for ($itercounter = 0; $itercounter < $iter; $itercounter++) {
    31.     //ITER START
    32.     $mass = $array;
    33.     $start = microtime(true);
    34.     //ALGO START
    35.     for ($i = 0, $size = sizeof($mass); $i < $size; $i++) {
    36.       if (isset($mass[$i])) {
    37.         $tmp = array_keys($mass, $mass[$i]);
    38.         if (($tmp_size = sizeof($tmp)) > 1) {
    39.           for ($j = 0; $j < $tmp_size; $j++) {
    40.             unset ($mass[$tmp[$j]]);
    41.           }
    42.         }
    43.       }
    44.     }
    45.     //ALGO END
    46.     $stop = microtime(true);
    47.     $total[] = $stop - $start;
    48.     //ITER END
    49.   }
    50.   $totals[$algo][] = $total;
    51.  
    52. ///////////////////////////////////////////////////////////////////////////////////////////////////////////////
    53.  
    54.   $algo = 'id';
    55.   $total = [];
    56.   for ($itercounter = 0; $itercounter < $iter; $itercounter++) {
    57.     //ITER START
    58.     $mass = $array;
    59.     $start = microtime(true);
    60.     //ALGO START
    61.     $c = array_count_values($mass);
    62.     $r = [];
    63.     foreach ($c as $k => $v) {
    64.       if ($v < 2) {
    65.         $r[] = $k;
    66.       }
    67.     }
    68.     //ALGO END
    69.     $stop = microtime(true);
    70.     $total[] = $stop - $start;
    71.     //ITER END
    72.   }
    73.   $totals[$algo][] = $total;
    74.  
    75. ///////////////////////////////////////////////////////////////////////////////////////////////////////////////
    76.  
    77.   $algo = 'Your';
    78.   $total = [];
    79.   for ($itercounter = 0; $itercounter < $iter; $itercounter++) {
    80.     //ITER START
    81.     $mass = $array;
    82.     $newArray = [];
    83.     $start = microtime(true);
    84.     //ALGO START
    85.     array_walk_recursive($mass, function ($key, $value) use (&$mass, &$newArray) {
    86.       $keys = array_keys($mass, $key);
    87.       if (1 === sizeof($keys)) {
    88.         $newArray[$keys[0]] = $key;
    89.       }
    90.     });
    91.     //ALGO END
    92.     $stop = microtime(true);
    93.     $total[] = $stop - $start;
    94.     //ITER END
    95.   }
    96.   $totals[$algo][] = $total;
    97.  
    98. ///////////////////////////////////////////////////////////////////////////////////////////////////////////////
    99.  
    100.  
    101. }
    102. /// GLOBAL ITER END
    103. showtime($totals);
    Добавлено спустя 2 минуты 26 секунд:
    а еще у меня случаются квантования минимального времени... хз как с этим бороться.

     
  2. Fell-x27

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

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.770
    Адрес:
    :сердА
    Блин, ды причем тут хдебаг и у кого какая машина? Есть онлайн сервис. Без хдебага. На одном и том же сервере в среднем два скрипта показывают стабильную разницу во времени. Вот и все. Не усложняй, приплетая проблемы, которых не было :)
    А то можно еще сказать, что во время тестов нельзя в игры играть, а то нагрузка на железо скачет и результаты будут не корректные. Еще нельзя комп из окна выбрасывать во время теста. Капитанишь, Игорь :)
    З.Ы. Закинь в свой тест код Исандро. Он работает по похожему принципу, но медленней моего гораздо. Хотя у тебя, вроде скорость не проседает от array_count_values. Неужели array_diff настолько тяжел даже для одного значения?
     
  3. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    Эти вещи надо писать в дисклеймере каждый раз. Ящитаю. И тестировать в инете на сервисах - это тоже вопрос тонкай. Не хотеть тестировать на сервисах.

    Добавлено спустя 4 минуты 49 секунд:
    У YSandro код жутко зависимый от каких-то неясных факторов. Мистика. Разброс минимумов жуткий просто. Хотя в среднем - стабильно.

    Код (PHP):
    1. function showtime($totals) {
    2.   foreach ($totals as $algo => $tryes) {
    3.     foreach ($tryes as $tk => $total) {
    4.       //частенько попадаются странные значения 0.(0), попробую их отсеять
    5.       foreach ($total as $k => $v) {
    6.         if ($v < 0.000000001) {
    7.           unset($total[$k]);
    8.         }
    9.       }
    10.       printf("$algo попытка " . ($tk + 1) . ": минимальное %.10f мкс, среднее %.10f мкс<br>\n", min($total) * 1000000, array_sum($total) * 1000000 / count($total));
    11.     }
    12.   }
    13. }
    14.  
    15. $totals = [];
    16.  
    17. /// GLOBAL ITER START
    18. $globaliter = 3;
    19. for ($globalitercounter = 0; $globalitercounter < $globaliter; $globalitercounter++) {
    20.   $array = array(1, 1, 2, 3, 4, 5, 5, 6, 4, 1, 1, 20, 30, 40, 50, 50, 60, 40, 4, 5, 5, 6, 4, 1, 1, 20, 30, 40);
    21.   $start = 0.0;
    22.   $stop = 0.0;
    23.   $iter = 1000;
    24.   $itercounter = 0;
    25.  
    26. ///////////////////////////////////////////////////////////////////////////////////////////////////////////////
    27.  
    28.   $algo = 'Felix';
    29.   $total = [];
    30.   for ($itercounter = 0; $itercounter < $iter; $itercounter++) {
    31.     //ITER START
    32.     $mass = $array;
    33.     $start = microtime(true);
    34.     //ALGO START
    35.     for ($i = 0, $size = sizeof($mass); $i < $size; $i++) {
    36.       if (isset($mass[$i])) {
    37.         $tmp = array_keys($mass, $mass[$i]);
    38.         if (($tmp_size = sizeof($tmp)) > 1) {
    39.           for ($j = 0; $j < $tmp_size; $j++) {
    40.             unset ($mass[$tmp[$j]]);
    41.           }
    42.         }
    43.       }
    44.     }
    45.     //ALGO END
    46.     $stop = microtime(true);
    47.     $total[] = $stop - $start;
    48.     //ITER END
    49.   }
    50.   $totals[$algo][] = $total;
    51.  
    52. ///////////////////////////////////////////////////////////////////////////////////////////////////////////////
    53.  
    54.   $algo = 'id';
    55.   $total = [];
    56.   for ($itercounter = 0; $itercounter < $iter; $itercounter++) {
    57.     //ITER START
    58.     $mass = $array;
    59.     $start = microtime(true);
    60.     //ALGO START
    61.     $c = array_count_values($mass);
    62.     $r = [];
    63.     foreach ($c as $k => $v) {
    64.       if ($v < 2) {
    65.         $r[] = $k;
    66.       }
    67.     }
    68.     //ALGO END
    69.     $stop = microtime(true);
    70.     $total[] = $stop - $start;
    71.     //ITER END
    72.   }
    73.   $totals[$algo][] = $total;
    74.  
    75. ///////////////////////////////////////////////////////////////////////////////////////////////////////////////
    76.  
    77.   $algo = 'Your';
    78.   $total = [];
    79.   for ($itercounter = 0; $itercounter < $iter; $itercounter++) {
    80.     //ITER START
    81.     $mass = $array;
    82.     $newArray = [];
    83.     $start = microtime(true);
    84.     //ALGO START
    85.     array_walk_recursive($mass, function ($key, $value) use (&$mass, &$newArray) {
    86.       $keys = array_keys($mass, $key);
    87.       if (1 === sizeof($keys)) {
    88.         $newArray[$keys[0]] = $key;
    89.       }
    90.     });
    91.     //ALGO END
    92.     $stop = microtime(true);
    93.     $total[] = $stop - $start;
    94.     //ITER END
    95.   }
    96.   $totals[$algo][] = $total;
    97.  
    98. ///////////////////////////////////////////////////////////////////////////////////////////////////////////////
    99.   $algo = 'YSandro';
    100.   $total = [];
    101.   for ($itercounter = 0; $itercounter < $iter; $itercounter++) {
    102.     //ITER START
    103.     $mass = $array;
    104.     $newArray = [];
    105.     $start = microtime(true);
    106.     //ALGO START
    107.     $countArr = array_count_values($mass);
    108.     foreach ($countArr as $key=>$value) {
    109.       if($value > 1){
    110.         $mass = array_diff($mass, array($key));
    111.       }
    112.     }
    113.     //ALGO END
    114.     $stop = microtime(true);
    115.     $total[] = $stop - $start;
    116.     //ITER END
    117.   }
    118.   $totals[$algo][] = $total;
    119.  
    120. ///////////////////////////////////////////////////////////////////////////////////////////////////////////////
    121.  
    122.  
    123. }
    124. /// GLOBAL ITER END
    125. showtime($totals); 
     
  4. Fell-x27

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

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.770
    Адрес:
    :сердА
    Ну пардоньте, ты знаешь, что у меня на работе нет пыха :)
     
  5. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    разве у таких энтузиастов нет своего сервачка? =)
     
  6. Fell-x27

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

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.770
    Адрес:
    :сердА
    Сервачок есть, но в нэт не светит пока. Да и шума от него много, круглые сутки крутить. Попугай пугается :)
     
  7. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    Всегда было интересно, чем же они занимаются в свободное время. Теперь ясно почему их так зовут!
     
  8. Fell-x27

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

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.770
    Адрес:
    :сердА
    К слову, они пугаются не только в "свободное время". Мой может играть с какой-нибудь блестяшкой у меня на столе, уронить ее на паркет со звоном, а потом с визгом начать летать по комнате, испугавшись этого звона. А так, очень прикольные зверушки.
     
  9. Your

    Your Старожил

    С нами с:
    2 июл 2011
    Сообщения:
    4.074
    Симпатии:
    7
    Хм...
    Код (PHP):
    1. $array=array(1, 1, 2, 3, 4, 5, 5, 6, 4, 1, 1, 20, 30, 40, 50, 50, 60, 40, 4, 5, 5, 6, 4, 1, 1, 20, 30, 40);
    2. $countArr = array_count_values($array);
    3. foreach ($countArr as $key=>$value) {
    4.     if($value > 1){
    5.         $array = array_diff($array, array($key));
    6.     }
    7. } 
    0.00030708312988281 секунд
    0.00034904479980469 секунд
    0.00064301490783691 секунд
    0.00074386596679688 секунд

    Код (PHP):
    1. $array=array(1, 1, 2, 3, 4, 5, 5, 6, 4, 1, 1, 20, 30, 40, 50, 50, 60, 40, 4, 5, 5, 6, 4, 1, 1, 20, 30, 40);
    2. for ($i = 0, $size = sizeof($array); $i<$size; $i++){
    3.     if (isset($array[$i])){
    4.         $tmp = array_keys($array,$array[$i]);
    5.         if (($tmp_size = sizeof($tmp))>1){
    6.             for($j = 0; $j<$tmp_size; $j++){
    7.                 unset ($array[$tmp[$j]]);
    8.             }
    9.         }
    10.     }
    11. } 
    4.3153762817383E-5 секунд - и туда сюда прыгает бывает и до 6 взлет...
    Код (PHP):
    1. $array=array(1, 1, 2, 3, 4, 5, 5, 6, 4, 1, 1, 20, 30, 40, 50, 50, 60, 40, 4, 5, 5, 6, 4, 1, 1, 20, 30, 40);
    2. $newArray=array();
    3. array_walk_recursive($array,function($key,$value) use (&$array,&$newArray) {
    4.     $arr=array_keys($array,$key);
    5.     if(1===sizeof($arr)) {
    6.         $newArray[$arr[0]]=$key;
    7.     }
    8. });
    9. $array=$newArray; 
    0.00016903877258301 секунд
    0.00017404556274414 секунд
    0.00017380714416504 секунд
    0.00018501281738281 секунд


    Вообще как удобнее так и пишите :D думаю тут еще способы есть...
     
  10. Fell-x27

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

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.770
    Адрес:
    :сердА
    4.3153762817383E-5 секунд это 0,00004. Через printf выводишь?

    В любом случае и на твоей машине результаты сравнимы с таковыми на сервисе.
     
  11. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    попробуй мой листинг кода у себя запусти
     
  12. YSandro

    YSandro Старожил

    С нами с:
    7 апр 2011
    Сообщения:
    2.523
    Симпатии:
    2
    Что-то сегодня несколько раз вспоминал о задачке. Зашёл на форум, а тут продолжение.
    Вместо затратной строки $mass2 = array_diff($mass2, array($key)); поставил заполнение нового массива, получилось в 1.8 раз быстрей. Но на самом деле я раньше ошибся в расчётах. Мой код быстрей, чем у Феликса
    :p
    Код (PHP):
    1. <?php
    2. echo '<br>==YSandro==<br>';
    3. $tstart = microtime(true);
    4. for ($x = 0; $x < 1000; $x++) {
    5.   $mass = array(1, 1, 2, 3, 4, 5, 5, 6, 4, 1, 1, 20, 30, 40, 50, 50, 60, 40, 4, 5, 5, 6, 4, 1, 1, 20, 30, 40);
    6.   $countArr = array_count_values($mass);
    7.   $newArr = array();
    8.   foreach ($countArr as $key=>$value) {
    9.     if($value == 1){
    10.       $newArr[] = $key;
    11.     }
    12.   }
    13. }
    14. $tend = microtime(true);
    15. echo number_format($tend-$tstart,'6',',','').' sec. ';
    16. print_r($newArr);
    17.  
    18. echo '<br>==Fell-x27==<br>';
    19. $tstart = microtime(true);
    20. for ($x = 0; $x < 1000; $x++) {
    21.   $mass = array(1, 1, 2, 3, 4, 5, 5, 6, 4, 1, 1, 20, 30, 40, 50, 50, 60, 40, 4, 5, 5, 6, 4, 1, 1, 20, 30, 40);
    22.   for ($i = 0, $size = sizeof($mass); $i<$size; $i++){
    23.     if (isset($mass[$i])){
    24.       $tmp = array_keys($mass,$mass[$i]);
    25.       if (($tmp_size = sizeof($tmp))>1){
    26.         for($j = 0; $j<$tmp_size; $j++){
    27.           unset ($mass[$tmp[$j]]);
    28.         }
    29.       }
    30.     }
    31.   }
    32. }
    33. $tend = microtime(true);
    34. echo number_format($tend-$tstart,'6',',','').' sec. ';
    35. print_r($mass);
    На http://www.compileonline.com/execute_php_online.php выводит
    Код (Text):
    1. ==YSandro==
    2. 0,005159 sec. Array ( [0] => 2 [1] => 3 [2] => 60 )
    3. ==Fell-x27==
    4. 0,019869 sec. Array ( [2] => 2 [3] => 3 [16] => 60 )
     
  13. Fell-x27

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

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.770
    Адрес:
    :сердА
    Нет. Просто сейчас ты выпилил array_diff. Без него уже Игорь выкладывал код, да, так оч шустро. Но с дифом беда беда.

    Код (PHP):
    1. <?php
    2. echo '<br>==YSandro==<br>';
    3. $tstart = microtime(true);
    4. for ($x = 0; $x < 1000; $x++) {
    5.   $mass = array(1, 1, 2, 3, 4, 5, 5, 6, 4, 1, 1, 20, 30, 40, 50, 50, 60, 40, 4, 5, 5, 6, 4, 1, 1, 20, 30, 40);
    6. $countArr = array_count_values($mass);
    7. foreach ($countArr as $key=>$value) {
    8.     if($value > 1){
    9.         $mass = array_diff($mass, array($key));
    10.     }
    11. }
    12. }
    13. $tend = microtime(true);
    14. echo number_format($tend-$tstart,'6',',','').' sec. ';
    15. print_r($mass);
    16.  
    17. echo '<br>==Fell-x27==<br>';
    18. $tstart = microtime(true);
    19. for ($x = 0; $x < 1000; $x++) {
    20.   $mass = array(1, 1, 2, 3, 4, 5, 5, 6, 4, 1, 1, 20, 30, 40, 50, 50, 60, 40, 4, 5, 5, 6, 4, 1, 1, 20, 30, 40);
    21.   for ($i = 0, $size = sizeof($mass); $i<$size; $i++){
    22.     if (isset($mass[$i])){
    23.       $tmp = array_keys($mass,$mass[$i]);
    24.       if (($tmp_size = sizeof($tmp))>1){
    25.         for($j = 0; $j<$tmp_size; $j++){
    26.           unset ($mass[$tmp[$j]]);
    27.         }
    28.       }
    29.     }
    30.   }
    31. }
    32. $tend = microtime(true);
    33. echo number_format($tend-$tstart,'6',',','').' sec. ';
    34. print_r($mass); 
    ==YSandro==
    0,133811 sec. Array ( [2] => 2 [3] => 3 [16] => 60 )
    ==Fell-x27==
    0,019587 sec. Array ( [2] => 2 [3] => 3 [16] => 60 )
     
  14. Your

    Your Старожил

    С нами с:
    2 июл 2011
    Сообщения:
    4.074
    Симпатии:
    7
    Да херню наделали, ТСу нужно было вообще вот это:
    Код (PHP):
    1. $mass=array(1, 1, 2, 3, 4, 5, 5, 6, 4, 1, 1, 20, 30, 40, 50, 50, 60, 40, 4, 5, 5, 6, 4, 1, 1, 20, 30, 40);
    2. $mass=array_unique($mass);
    Array
    (
        [0] => 1
        [2] => 2
        [3] => 3
        [4] => 4
        [5] => 5
        [7] => 6
        [11] => 20
        [12] => 30
        [13] => 40
        [14] => 50
        [16] => 60
    )
     
  15. Fell-x27

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

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.770
    Адрес:
    :сердА
    Читай внимательнее. ТСу надо было, чтобы удалялись не дубликаты записей, а все дублирующиеся множества. Полностью.
     
  16. Your

    Your Старожил

    С нами с:
    2 июл 2011
    Сообщения:
    4.074
    Симпатии:
    7
    Вон оно, что михалыч =)
    Код (PHP):
    1. $mass=array('40 41 42 44 ' , '39 44 43 45 45 39 45 45' , ' 41 44');
    2. echo'<pre>';
    3. $mass=array_map(function($value,$key=' ') {
    4.     return array_filter(
    5.         array_unique(explode($key,$value)),function($value) {
    6.             return $value;
    7.         }
    8.     );
    9. },$mass);
    10. print_r($mass);
    11. echo'</pre>';
    Array
    (
    [0] => Array
    (
    [0] => 40
    [1] => 41
    [2] => 42
    [3] => 44
    )

    [1] => Array
    (
    [0] => 39
    [1] => 44
    [2] => 43
    [3] => 45
    )

    [2] => Array
    (
    [1] => 41
    [2] => 44
    )

    )

    :D
    Хотя конечно стоило бы сделать массив 1, а не чтобы еще ключи массива, делать массивом, либо применять регулярки.
     
  17. YSandro

    YSandro Старожил

    С нами с:
    7 апр 2011
    Сообщения:
    2.523
    Симпатии:
    2
    Your, с тем вопросом вроде как проехали. Основное обсуждение было вокруг этого:
     
  18. sin313

    sin313 Новичок

    С нами с:
    20 май 2014
    Сообщения:
    35
    Симпатии:
    0
    Чуть не по теме вопрос. Может у кого была такая проблема. Выносишь код в отдельный файл, съезжает таблица CSS и как ни странно в мозиле все нормально , а в опере и хроме чудеса начинают творится.
    Выносной файл подключаю так.
    <div class="left_menu">
    <?php include($_SERVER['DOCUMENT_ROOT'].'/ks/views/left_menu/left_menu.php'); ?>
    </div>
     
  19. Fell-x27

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

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.770
    Адрес:
    :сердА
    Скажу лишь, что ты просто с путями CSS что-то накосячил. PHP никак не влияет на работу браузеров и отображение страницы. Он просто текст генерит.
     
  20. sin313

    sin313 Новичок

    С нами с:
    20 май 2014
    Сообщения:
    35
    Симпатии:
    0
    Это то да, Я сам удивлен. Короче вынес еще в файл <div class="left_menu"> </div> , все везде заработало. Мне кажется это глюки браузеров хром и опера, поскольку если бы Я с путями напутал, тогда и в мозиле не работало, но там все отлично как до выноски так и после.
     
  21. Fell-x27

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

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.770
    Адрес:
    :сердА
    Перестановки кода у тебя не браузеры с толку сбивают. Они саму страницу так или иначе у тебя ломали. А к ошибкам у всех браузеров свое отношение. Кто-то строг, кто-то пытается понять "что хотел сказать автор" и сам ошибки правит по мере сил. Смотреть надо не на то, чем отличается то, что браузер сейчас нарисовал от того, что было, а исходный текст страницы, какой был и какой стал. Ошибка там.
     
  22. sin313

    sin313 Новичок

    С нами с:
    20 май 2014
    Сообщения:
    35
    Симпатии:
    0
    Новая проблемка. CSS уже и так и сяк крутил. В опере хроме позиционирование одно, в мозиле разница в 1px , в IE 7 вообще -15px ))). Вся проблема заключалась в том что два блока <div> вынес в отдельные файлы так по правильному, а потом подключил как обычно через includ. Интереса ради вставил без выноски и все сразу одинаково во всех браузерах и да же IE 7 заработало. Что за чудеса)
    Код с выноской блоков <div> в отдельные файлы:
    <body>
    <div class="glaw_ramka">
    <div class="main_menu"><img src="images/main_menu.gif"></div>
    <?php include($_SERVER['DOCUMENT_ROOT'].'/ks/views/left_menu/left_menu.php'); ?>
    <?php include($_SERVER['DOCUMENT_ROOT'].'/ks/views/pages/index.php'); ?>
    </div>
    </body>
     
  23. runcore

    runcore Старожил

    С нами с:
    12 окт 2012
    Сообщения:
    3.625
    Симпатии:
    158
    в один проход
    Код (PHP):
    1. $mass = array(1, 1, 2, 3, 4, 5, 5, 6, 4, 1, 1, 20, 30, 40, 50, 50, 60, 40, 4, 5, 5, 6, 4, 1, 1, 20, 30, 40);
    2. $uniq = $trash = array();
    3. foreach($mass as $v) {
    4.     if (isset($trash[$v])) continue;
    5.     if (!isset($uniq[$v])) {
    6.         $uniq[$v]=1;
    7.     } else {
    8.         $trash[$v]=1;
    9.         unset($uniq[$v]);
    10.     }
    11. }