Comment puis-je retourner un type booléen dans une variable? J'ai le code:
$imageRes = array_reduce(['image', 'image1', 'image2'], function ($carry) {
return in_array($carry, ['image1', 'image2']);
});
J'ai besoin de return dans imageRes un type booléen: true / false, si l'un des éléments de ['image1', 'image2'] est dans ['image', 'image1', 'image2'] . Comment puis-je le faire?
3 Réponses :
Utilisez array_intersect () au lieu de array_reduce () , comptez le résultat et convertissez-le en booléen. S'il n'y a pas d'intersections, le count () sera nul, donc un booléen false . S'il y a au moins une valeur qui se croise, le count () sera supérieur à un et tout nombre différent de zéro converti en booléen sera true .
bool(true)
Sortie :
$imageRes = (bool)count(array_intersect(['image1', 'image2'], ['image', 'image1', 'image2']));
array_intersect ()
Je n'ai pas besoin de retour de tableau dans $ imageRes Je n'ai besoin que de retour vrai / faux.
Vous voulez donc que ce soit true si un seul des éléments du tableau est dans le plus petit tableau?
Oui. Vous avez raison ... j'ai besoin de retourner vrai si l'élément du tableau a été trouvé
Voir ma réponse révisée.
Pourquoi pas (bool) array_intersect (['image1', 'image2'], ['image', 'image1', 'image2']); ? Pourquoi avons-nous besoin d'utiliser count ?
Vous pouvez réellement vous en passer, car un tableau avec des valeurs est la vérité.
Si vous avez juste besoin de savoir si l'un des éléments est dans les deux tableaux, utilisez array_intersect () , comptez le résultat et transtypez en booléen ( !! )
$ref_array = ['image1', 'image2']; $array = ['image', 'image1', 'image2']; $imageRes = !!count(array_intersect($array, $ref_array)); var_dump($imageRes);
Vous pouvez également y parvenir en faisant ! Array_diff () - il y a de nombreuses façons d'arriver à Rome .. ;-)
Une solution possible avec array_reduce serait comme ceci:
$imageRes = array_reduce(
['image', 'image1', 'image2',],
function($carry, $item) {
return $carry || in_array($item, ['image1', 'image2']);
},
false //Initial value is false
);
Qu'essayez-vous d'accomplir?
@Eddie J'ai besoin de renvoyer le résultat de
in_arraydans la variable $ imageResOui, mais quelle est la logique? Essayez-vous de vérifier si l'élément 0 est le même avec l'élément 1 ou 2?
@Eddie Ouais. J'ai besoin de vérifier
image1,image2pourquoi pas
$ a [0] === $ a [1] || $ a [0] === $ a [2]?@Eddie je peux le faire et j'aime ça. Mais comment je peux renvoyer le résultat vrai / faux dans
$ imageResOui,
$ imageRes = $ a [0] === $ a [1] || $ a [0] === $ a [2];@Eddie ahh non .. Je peux avoir plusieurs valeurs dans le tableau .. Je peux avoir 100 images en position aléatoire
mais vous voulez seulement vérifier le premier élément contre le 99?
@Eddie Non. Je veux vérifier la valeur = image1, image2, je peux et vérifier l'image5