За последние 24 часа нас посетили 17525 программистов и 1716 роботов. Сейчас ищут 1823 программиста ...

Сложение чисел из файла

Тема в разделе "PHP для новичков", создана пользователем Игорь_Vasinsky, 13 ноя 2008.

  1. karakh

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

    С нами с:
    11 дек 2007
    Сообщения:
    1.344
    Симпатии:
    0
    Тьфу! поменяй $num_arr на $sorted_five в each и reset

    Совсем заработался.
     
  2. Игорь_Vasinsky

    Игорь_Vasinsky Активный пользователь

    С нами с:
    13 ноя 2008
    Сообщения:
    203
    Симпатии:
    0
    Адрес:
    Уфа
    Результат

    0 = 7 1 = 5 2 = 4 3 = 3 4 = 3

    7 то десятая по счёту. Или я тупой
     
  3. karakh

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

    С нами с:
    11 дек 2007
    Сообщения:
    1.344
    Симпатии:
    0
    Хмм... если используешь arsort а не просто rsort то по идее должно выдавать нормальный порядковый номер
     
  4. Игорь_Vasinsky

    Игорь_Vasinsky Активный пользователь

    С нами с:
    13 ноя 2008
    Сообщения:
    203
    Симпатии:
    0
    Адрес:
    Уфа
    И потом - результат выводится как

    я бы хотел использовать порядковый номер каждого числа дальше в своих целях
     
  5. Игорь_Vasinsky

    Игорь_Vasinsky Активный пользователь

    С нами с:
    13 ноя 2008
    Сообщения:
    203
    Симпатии:
    0
    Адрес:
    Уфа
    Код (Text):
    1. <?php
    2.  
    3.  $numbers = "2|0|0|3|0|1|0|5|0|7|3|4|1|2|0|3|1";
    4.  $num_arr = explode("|", $numbers);
    5.  rsort($num_arr); //
    6.  $sorted_five = array_slice($num_arr, 0, 5);
    7. reset($sorted_five);
    8. while (list($key, $val) = each($sorted_five)) {
    9. echo "$key = $val\n";
    10. }
    11. ?>
    Вы так решили. Тут нету arsort
     
  6. karakh

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

    С нами с:
    11 дек 2007
    Сообщения:
    1.344
    Симпатии:
    0
    А! понял!

    PHP:
    1. $sorted_five = array_slice($num_arr, 0, 5);
    сбрасывает ключи. Поэтому меняешь на
    PHP:
    1. $sorted_five = array_slice($num_arr, 0, 5[b], true[/b]);
     
  7. karakh

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

    С нами с:
    11 дек 2007
    Сообщения:
    1.344
    Симпатии:
    0
    блин, пост от 15:53, прямо над твоим -

     
  8. Игорь_Vasinsky

    Игорь_Vasinsky Активный пользователь

    С нами с:
    13 ноя 2008
    Сообщения:
    203
    Симпатии:
    0
    Адрес:
    Уфа
    Warning: Wrong parameter count for array_slice() in
    Warning: reset(): Passed variable is not an array or object in
    Warning: Variable passed to each() is not an array or object in

    Блин ! Доигрались!
     
  9. karakh

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

    С нами с:
    11 дек 2007
    Сообщения:
    1.344
    Симпатии:
    0
    мде... работает начиная с php 5.0.2

    У тебя видимо что-то более раннее.
     
  10. karakh

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

    С нами с:
    11 дек 2007
    Сообщения:
    1.344
    Симпатии:
    0
    вместо $sorted_five = array_slice($num_arr, 0, 5, true); попробуй

    PHP:
    1. while( sizeof($num_arr) > 5 ) array_pop( $num_arr);
    после чего или поменять все $sorted_five на $num_arr или извратиться и $sorted_five=$num_arr;
     
  11. Игорь_Vasinsky

    Игорь_Vasinsky Активный пользователь

    С нами с:
    13 ноя 2008
    Сообщения:
    203
    Симпатии:
    0
    Адрес:
    Уфа
    Так решение есть ?
     
  12. Игорь_Vasinsky

    Игорь_Vasinsky Активный пользователь

    С нами с:
    13 ноя 2008
    Сообщения:
    203
    Симпатии:
    0
    Адрес:
    Уфа
    Постоянство - это хорошо.

    и вот :

    0 = 7 1 = 5 2 = 4 3 = 3 4 = 3
     
  13. Kreker

    Kreker Старожил

    С нами с:
    8 апр 2007
    Сообщения:
    5.433
    Симпатии:
    0
    Adamant
    Извини, но не было времени читать весь топик. На электричку спешил.

    1. Значит использовать первый вариант
    2. Никто не мешает сделать break
    3. Вставить функцию array_fill вместо $count = Array();

    Да и вообще, у меня суммирование одинаковых чисел +)
     
  14. Игорь_Vasinsky

    Игорь_Vasinsky Активный пользователь

    С нами с:
    13 ноя 2008
    Сообщения:
    203
    Симпатии:
    0
    Адрес:
    Уфа
  15. Игорь_Vasinsky

    Игорь_Vasinsky Активный пользователь

    С нами с:
    13 ноя 2008
    Сообщения:
    203
    Симпатии:
    0
    Адрес:
    Уфа
    чё это щас было?
     
  16. free-bits

    free-bits Активный пользователь

    С нами с:
    13 ноя 2008
    Сообщения:
    296
    Симпатии:
    0
    Адрес:
    г. Красноярск
    Морзянка?:)
     
  17. karakh

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

    С нами с:
    11 дек 2007
    Сообщения:
    1.344
    Симпатии:
    0
    Ладно, продолжаем развлекаться :)

    PHP:
    1. function array_slice_key($array, $offset, $len){
    2. [b]$a=0;[/b] // добавлено, забыл совсем
    3. foreach ($array as $key => $value) {
    4.     if ($a >= $offset && $a - $offset <= $length)
    5.          $output_array[$key] = $value;
    6.     $a++;
    7. }
    8.  
    9. return $output_array;
    10. }
    И вместо array_slice используй array_slice_key
     
  18. Игорь_Vasinsky

    Игорь_Vasinsky Активный пользователь

    С нами с:
    13 ноя 2008
    Сообщения:
    203
    Симпатии:
    0
    Адрес:
    Уфа
    karakh дружище! Я рад что вы сдесь мне дурачку помогаете, но если вы будете писать отрывками кода, то я ничё не пойму!
     
  19. free-bits

    free-bits Активный пользователь

    С нами с:
    13 ноя 2008
    Сообщения:
    296
    Симпатии:
    0
    Адрес:
    г. Красноярск
     
  20. Игорь_Vasinsky

    Игорь_Vasinsky Активный пользователь

    С нами с:
    13 ноя 2008
    Сообщения:
    203
    Симпатии:
    0
    Адрес:
    Уфа
    можно код целиком? я уже запутался
     
  21. karakh

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

    С нами с:
    11 дек 2007
    Сообщения:
    1.344
    Симпатии:
    0
    вроде так

    PHP:
    1. <?php
    2.  function array_slice_key($array, $offset, $len){
    3.  $a=0;
    4.  foreach ($array as $key => $value) {
    5.      if ($a >= $offset && $a - $offset <= $length)
    6.          $output_array[$key] = $value;
    7.      $a++;
    8.  }
    9.    
    10.  return $output_array;
    11.  }
    12.  
    13. $numbers = "2|0|0|3|0|1|0|5|0|7|3|4|1|2|0|3|1";
    14. $num_arr = explode("|", $numbers);
    15. arsort($num_arr);
    16. $sorted_five = array_slice_keys($num_arr, 0, 5);
    17. reset($sorted_five);
    18. while (list($key, $val) = each($sorted_five)) {
    19. echo "$key = $val\n";
    20. }
    21. ?>
     
  22. Игорь_Vasinsky

    Игорь_Vasinsky Активный пользователь

    С нами с:
    13 ноя 2008
    Сообщения:
    203
    Симпатии:
    0
    Адрес:
    Уфа
    Fatal error: Call to undefined function: array_slice_keys()
     
  23. karakh

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

    С нами с:
    11 дек 2007
    Сообщения:
    1.344
    Симпатии:
    0
    ok, сорри. пиши array_slice_key без s на конце.
     
  24. free-bits

    free-bits Активный пользователь

    С нами с:
    13 ноя 2008
    Сообщения:
    296
    Симпатии:
    0
    Адрес:
    г. Красноярск
    array_slice_keys != array_slice_key
     
  25. karakh

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

    С нами с:
    11 дек 2007
    Сообщения:
    1.344
    Симпатии:
    0
    это я ошибся, название и вызов отличаются. Как-то не привык к людям, которые натыкаясь на этот еррор в куске кода на 20 строк не могут сами найти в чем дело...