2 votes

Le tableau aléatoire ne donne pas le résultat souhaité php (laravel 5.3)

J'ai un tableau avec 2 index 0 et 1 et je veux que lorsque je l'appelle, il sélectionne aléatoirement à partir de ces index. mon tableau est le suivant

'schools' => [
    'records' => [
        'students' => [
            'add' => [
            'text 1',
            'text 2'
            ],
        ],
    ],
],

Ici, mon tableau est le suivant

trans('app.schools.records.students.add')

Il prend maintenant le texte 1 et le texte 2, je l'ai donc passé à ma méthode dans l'aide sous la forme suivante

{{gettitles(trans('app.schools.records.students.add'))}}

Ma méthode get gettitles se présente comme suit

function gettitles ($array){
  $rand_keys = array_rand($array, 2);
  echo $array[$rand_keys[0]] . "\n";
  echo $array[$rand_keys[1]] . "\n";
}

Il prend toujours les deux si je mets l'index 0 en écho, il ne prend que son texte... Mais je ne veux qu'un seul texte au hasard parmi le texte 1 et le texte 2. Je vous demande de m'aider à résoudre ce problème. Merci de m'aider à résoudre ce problème.

1voto

Dave Points 451
$rand_keys = array_rand($array, 2);

Vous lui demandez de renvoyer 2 éléments. Le 2 est le nombre d'éléments aléatoires à renvoyer. Remplacez-le par 1.

$rand_keys = array_rand($array, 1);

http://php.net/manual/en/function.array-rand.php

Ce code a été testé et fonctionne :

$myArray = array("test 1", "test2");

gettitles($myArray);

function gettitles ($array){
    $rand_keys = array_rand($array, 1);
    echo $array[$rand_keys] . "\n";
}

La fonction que vous choisissez d'utiliser array_rand renvoie la clé des éléments aléatoires, et non le contenu de l'élément lui-même.

1voto

Rahul Meshram Points 6424

array_rand fonction choisit une ou plusieurs entrées aléatoires dans un tableau et renvoie la clé (ou les clés) des entrées aléatoires. Elle utilise un générateur de nombres pseudo-aléatoires qui n'est pas adapté à des fins cryptographiques. Ainsi, au lieu de 2 passe 1.

function gettitles ($array){
  shuffle($array);
  $rand_keys= array_values($array);
  echo $array[$rand_keys[0]] . "\n";
  echo $array[$rand_keys[1]] . "\n";
}

Cela fonctionnera.

EDIT

Et utiliser la combinaison de mélanger avec la fonction valeurs_de_tableau cela fonctionnera.

function gettitles ($array){
  shuffle($array);
  $rand_keys= array_values($array);
  echo $array[$rand_keys[0]] . "\n";
  echo $array[$rand_keys[1]] . "\n";
}

EDIT 2

function gettitles ($array){
  shuffle($array);
  $rand_keys= array_values($array);
  echo $rand_keys[0] . "\n";
  echo $rand_keys[1] . "\n";
}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X