3
votes

Php Laravel comparant 2 valeurs de tableau

Est-il possible de comparer deux valeurs de tableau?

Dites :

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

Exemple de code:

If (Array1 >= Array2){

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

Résultat attendu:

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


4 commentaires

Pouvez-vous expliquer plus? Que voulez-vous dire par comparer ici?


Comparez les valeurs de Array 1 [0] et Array 2 [0] et donne le résultat de Not available ou Available et ainsi de suite. C'est possible ?


L'ordre est-il important?


Qu'entendez-vous par «disponible» ou «non disponible»? Quel est le lien avec Laravel de quelque manière que ce soit?


5 Réponses :


0
votes

Si les deux tableaux ont la même longueur, vous pouvez utiliser la boucle for comme ci-dessous,

$temp = [];
for($i = 0; $i < count($array1);$i++){
    $temp[] = (($array1[$i] >= $array2[$i]) ? 'Not Available': 'Available');
}
print_r($temp);


0 commentaires

1
votes

Vous pouvez simplement faire quelque chose de simple comme ceci:

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;
    }

La raison principale est que nous ne savons pas d'après votre message si les tableaux seront toujours de la même taille, vous devez donc les comparer pour obtenir le plus grand des deux, utilisez-le pour la boucle. Après cela, ce ne sont que de simples comparaisons.


1 commentaires

Votre génération de $ itemCount est un peu longue (IMHO) - vous pouvez simplement utiliser $ itemCount = max (count ($ array1), count ($ array2));



0
votes

Oui, il est possible d'utiliser une simple boucle for comme ci-dessous:

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

Remarque Ici, les deux tableaux doivent être de même taille.


0 commentaires

0
votes

Si array1 et array2 ont toujours la même taille, alors solution simple

$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 commentaires

2
votes

Vous pouvez utiliser une fonction de rappel avec la fonction array_map comme celle-ci.

<?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>';

?>

Vous pouvez également personnaliser la logique à l'intérieur de la fonction pour une logique plus complexe. Vous pouvez ajouter n'importe quel nombre de tableaux selon vos besoins. J'espère que vous comprenez.


0 commentaires