随机数组没有给出想要的结果php(laravel 5.3)

时间:2017-01-12 06:19:56

标签: php arrays laravel

我有2个索引0和1的数组我希望当我调用它时应该从这些索引中选择随机 我的数组是

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

这里我的数组是

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

它现在选择文本1和文本2,所以我把它作为帮助传递给了我的方法

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

我的get gettitles方法看起来像

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

如果我回显索引0它唯一的文本,它总是拿起两个... 但我只想从文本1和文本2中随机选择一个 请帮助解决它 感谢

2 个答案:

答案 0 :(得分:1)

$rand_keys = array_rand($array, 2);

你告诉它返回2个元素。 2是要返回的随机元素的数量。将其更改为1。

$rand_keys = array_rand($array, 1);

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

此代码经过测试并有效:

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

gettitles($myArray);

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

您选择使用 array_rand 的函数会返回随机元素的键,而不是元素本身的内容。

答案 1 :(得分:1)

array_rand功能 从数组中选择一个或多个随机条目,并返回随机条目的一个或多个键。它使用不适合加密目的的伪随机数生成器。 所以,而不是2传1。

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

它会起作用。

编辑

使用shuffle函数的组合与array_values它将起作用。

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

编辑2

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