Php Laravel Сравнение 2 значений массива - PullRequest
3 голосов
/ 08 мая 2019

Можно ли сравнить два значения массива?

Скажите:

Array 1>         Array 2>
Values:          Values:
2                 11
36                13
65                11
78                1

Пример кода:

If (Array1 >= Array2){

    echo"Not Available";
    }
    else
    {
    echo"Available";
    }

Ожидаемый результат:

Array ("Not Available",
       "Available",
       "Available",
       "Available")

Ответы [ 5 ]

1 голос
/ 08 мая 2019

Вы можете использовать функцию обратного вызова вместе с функцией array_map следующим образом.

<?php 

function getResult($first, $second)
{
    return $first > $second ? 'Available' : 'Not Available';
}

$firstArray = [1,4,5,6];
$secondArray = [2,3,1,9];

$data = array_map('getResult', $firstArray, $secondArray);

echo '<pre>',print_r($data),'<pre>';

?>

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

1 голос
/ 08 мая 2019

Вы можете сделать что-то простое, как это:

function compareArrays(array $array1, array $array2): array
    {
        $itemCount = (count($array1) > count($array2)) ? $array1 : $array2;
        $returnArray = [];
        for($i = 0; $i < count($itemCount); $i++) {
            $returnArray[] = ($array1 >= $array2) ? 'Avalible' : 'Not Avalible';
        }
        return $returnArray;
    }

Основная причина в том, что мы не знаем из вашего поста, будут ли массивы всегда иметь одинаковый размер, поэтому вы должны сравнить их, чтобы получить большее из двух значений, а затем использовать это для цикла. После этого это просто простые сравнения.

0 голосов
/ 08 мая 2019

Если массив1 и массив2 всегда имеют одинаковый размер, то простое решение

$data = [];
foreach($array1 as $key => $value) {
    if (!isset($array2[$key])) { // for safety check for second array index bound
        break;
    }

    $data[] = $value >= $array2[$key] ? 'Not Available' : 'Available';
 }

return $data;
0 голосов
/ 08 мая 2019

Да, можно использовать простой цикл for, как показано ниже:

for($i = 0; $i < count($array1); $i++){
  if($array1[$i] >= $array2[$i]){
    echo "Available"
  }else{
    echo "Not available";
  }
}

Примечание Здесь два массива должны быть одинакового размера.

0 голосов
/ 08 мая 2019

Если оба массива имеют одинаковую длину, вы можете использовать для цикла, как показано ниже,

$temp = [];
for($i = 0; $i < count($array1);$i++){
    $temp[] = (($array1[$i] >= $array2[$i]) ? 'Not Available': 'Available');
}
print_r($temp);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...