Множественное условие внутри массива php - PullRequest
0 голосов
/ 01 марта 2019

Как проверить минимальное значение в массиве php с несколькими условиями.Мой массив ниже:

$arr = [[472 =>['EL' => 52.9,'MT' => 57.375 'MO' => 56.6,'SC' => 26,'ET' => 50.775]], 
       [505 =>['EL' => 53.425,'MT' => 25,'MO' => 62.8,'SC' => 23,'ET' => 25]]];    
$total = array_reduce(
   $arr,
   function($arr, $key) {
     $id = key($key);
     $consumed = $key[$id];
     $sc = array_keys($consumed);
     $arr[$id] = [
       "totalc" => array_sum($consumed),
       "condition" =>  array_search('SC', $sc) ? min($consumed) >= 23:min($consumed) >=26
     ];
     return $arr;
   },
   []
 );

Если ключом является «SC», минимальное значение для «SC» равно 23, но для значения другого ключа минимальное значение равно 26. Поэтому приведенный выше код долженсоздайте следующий вывод:

 Array
(
    [472] => Array
        (
            [totalc] => 243.65
            [condition] => 1
        )    
    [505] => Array
        (
            [totalc] => 189.225
            [condition] => 
        )
    )

Ключ SC в массиве ([472] и [505]) соответствует минимальному условию 23, но значение ключа ET не соответствуетминимальное условие 26. Поэтому массив [505] должен выдавать false по значению condition key.Но если мы изменим значение ET на 26 или более в массиве [505], мы все равно получим значение false.Но правильное значение должно быть 1 или true.Таким образом, если массив выглядит следующим образом:

$arr = [[472 =>['EL' => 52.9,'MT' => 57.375 'MO' => 56.6,'SC' => 26,'ET' => 50.775]], 
           [505 =>['EL' => 53.425,'MT' => 25,'MO' => 62.8,'SC' => 23,'ET' => 26]]];

Правильный вывод будет:

Array
    (
        [472] => Array
            (
                [totalc] => 243.65
                [condition] => 1
            )    
        [505] => Array
            (
                [totalc] => 189.225
                [condition] => 1
            )
        )

Короче, минимальное значение 'SC' должно быть 23, а значение mim равнодругих КЛЮЧЕЙ (EL, MT, MO, ET) должно быть 26. Я пытался решить эту проблему почти два дня и две ночи, она все еще не работает.Так что, если бы вы могли мне помочь, я был бы очень признателен.Спасибо

1 Ответ

0 голосов
/ 01 марта 2019
<code>$arr = [[472 => ['EL' => 52.9, 'MT' => 57.375, 'MO' => 56.6, 'SC' => 26, 'ET' => 50.775]],
        [505 => ['EL' => 53.425, 'MT' => 25, 'MO' => 62.8, 'SC' => 23, 'ET' => 26]]];
function pr($arr)
{
    echo "<pre>";
    print_r($arr);
    echo "
";} $ total = array_reduce ($ arr, function ($ arr, $ key) {$ id = key ($ key); $ temp = $ потребляемый = $ key [$ id]; $ sc = array_keys ($ потребляется); $ условие = ложь; if (array_search ('SC', $ sc) && ($ потреблено ['SC'])> = 23) {$ condition = true;} не установлено ($ temp ['SC']); $ condition = ($ condition && min ($ temp)> = 26? true: false); $ arr [$ id] = ["totalc" => array_sum ($ потреблено), "условие" => $ условие,]; return $ arr;}); pr ($ total); die;

если min SC равен 23, а min всех остальных равен 26, тогда условие истинно.

Пояснение:

472 => SC = 26 (> = 23) и все остальные значения>> 26, поэтому condition = true
505 => SC = 23 (> = 23), и теперь я проверю другиезначения. Теперь MT = 25, поэтому condition = false

Давайте возьмем несколько примеров демонстрационных примеров,

$arr = [[472 => ['EL' => 52.9, 'MT' => 57.375, 'MO' => 56.6, 'SC' => 22, 'ET' => 50.775]],
        [505 => ['EL' => 53.425, 'MT' => 26, 'MO' => 62.8, 'SC' => 23, 'ET' => 26]]];

472 => SC <23, поэтому <code>condition = false независимо от другого значения.
505 => SC> = 23, поэтому сначала condition = true, теперь мы проверим все остальные значения. Как мы увидели, все остальные больше 26, поэтому condition =true.

Working demo

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...