Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > PHP
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 25.08.2013, 04:59   #1
zowen09
Новичок
Джуниор
 
Регистрация: 25.08.2013
Сообщений: 1
По умолчанию Процент под обрез

Подскажите пожалуйста 1 вещь. Запутался с обрезанием %.

Задача такая, есть массив пользователей:

PHP код:
    [0] => Array
        (
            [
user_id] => 111
            
[pct_base] => 0.5
        
)

    [
1] => Array
        (
            [
user_id] => 112
            
[pct_base] => 1
        
)

    [
2] => Array
        (
            [
user_id] => 113
            
[pct_base] => 3
        
)

    [
3] => Array
        (
            [
user_id] => 114
            
[pct_base] => 3
        


Нужно обрезать pct_base следующим образом:

Код:
Пользователь 1, 0.5%
Пользователь 2, 1%
Пользователь 3, 2%
Пользователь 4, 2%
Пользователь 5, 2%

Пользователь 3, обрезает пользователей 4 и 5, и на выходе:
Пользователь 1, 0.5%
Пользователь 2, 1%
Пользователь 3, 2%



Код:
Пользователь 1, 0.5%
Пользователь 2, 1%
Пользователь 3, 2%
Пользователь 4, 3%
Пользователь 5, 2%

Пользователь 3, обрезает пользователя  5, и на выходе:
Пользователь 1, 0.5%
Пользователь 2, 1%
Пользователь 3, 2%
Пользователь 4, 3%


Код:
Пользователь 1, 1%
Пользователь 2, 2%
Пользователь 3, 0,5%
Пользователь 4, 0,5%
Пользователь 5, 3%

и на выходе:
Пользователь 1, 1%
Пользователь 2, 2%
Пользователь 5, 3%


Код:
Пользователь 1, 2%
Пользователь 2, 2%
Пользователь 3, 2%
Пользователь 4, 2%
Пользователь 5, 1%

и на выходе:
Пользователь 1, 2%



// собственно пока завис тут:

PHP код:
        $result = array();
        foreach(
$test as $key => $user)
        {
            
// если существует следующий лидер  
            
if(isset($test[$key+1]))
            {
                if(
$user['pct_base'] < $test[$key+1]['pct_base'])
                {
                    
$result[] = $user;
                }
            }
        } 
Подскажите пожалуйста как это можно просто организовать ?
zowen09 вне форума Ответить с цитированием
Старый 25.08.2013, 22:21   #2
Mortimoro
Форумчанин
 
Регистрация: 03.12.2010
Сообщений: 334
По умолчанию

Про обрезание лучше у еврейского народа спрашивать... в чем суть твоего скрипта? Что мы должны узнать на выходе?

Если надо узнать кто первым достиг максимальной циферки, то можно отсортировать массив по убыванию значений и взять нулевой элемент - код в две строки.

Последний раз редактировалось Mortimoro; 25.08.2013 в 22:30.
Mortimoro вне форума Ответить с цитированием
Старый 25.08.2013, 22:23   #3
Johnatan
Antimoderаtoris
Участник клуба
 
Регистрация: 08.02.2008
Сообщений: 1,251
По умолчанию

PHP код:
$result = array();
$max 0;
foreach(
$test as $key => $user) {
    if(
$user['pct_base'] > $max) {
        
$result[] = $user;
        
$max $user['pct_base'];
    }

Правда, я подумал и решил, что вот так будет получше:
PHP код:
$max 0;
$result array_filter($test, function($user) use (&$max){
    if (
$user['pct_base'] > $max){
        
$max $user['pct_base'];
        return 
true;
    } else
        return 
false;
}); 
98% из тысячи моих постов сделаны в профильном подфоруме. Я не накручиваю свои посты болтанием в "курилке", а ты?

Последний раз редактировалось Johnatan; 25.08.2013 в 22:37.
Johnatan вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
процент материала Nickolai47 C# (си шарп) 2 19.02.2013 17:46
Процент. ROBERT033 Microsoft Office Excel 7 13.05.2011 00:05
Процент в RzProgressBar artemavd Компоненты Delphi 1 22.02.2010 22:53
Помогите, пожалуйста,с переводом курсора! Времени в обрез Maemi_IT Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 4 05.01.2010 21:13
Процент загруженности asd48 Общие вопросы C/C++ 13 07.06.2009 21:04