【问题标题】:Random array not giving desired result php (laravel 5.3)随机数组没有给出期望的结果php(laravel 5.3)
【发布时间】:2017-01-12 06:19:55
【问题描述】:

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

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

这里我的数组是

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

它现在同时选择文本 1 和文本 2,所以我将它 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 它的唯一 ist 文本,它总是会同时接收... 但我只想从文本 1 和文本 2 中随机选择一个 请帮忙修复 谢谢

【问题讨论】:

    标签: php arrays laravel


    【解决方案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 返回随机元素的键,而不是元素本身的内容。

    【讨论】:

    • 这样表示未定义索引
    • 如果我回显然后回显 $rand_keys 它给出数组 0 或 1 的随机索引而不是它的值
    • 它返回元素键。从那里您必须使用密钥提取数据。我将编辑我的答案以显示。
    • 它给出随机文本,错误为 undefined index.text 1 或有时 undefined index:text 2
    • 我刚刚编辑的代码实际上是我输入并验证的。如果您传入一个有效数组,它将随机回显单个元素的内容。
    【解决方案2】:

    array_rand函数 从数组中选择一个或多个随机条目,并返回随机条目的键(或多个键)。它使用不适合加密目的的伪随机数生成器。 所以,不是 2 pass 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";
    }
    

    【讨论】:

    • 以这种方式表示未定义的索引,。如果我回显然后回显 $rand_keys 它给出数组 0 或 1 的随机索引而不是它的值
    • 它给出随机文本,错误为 undefined index.text 1 或有时 undefined index:text 2
    • 检查 EDIT 2 部分,这是最后的工作,我刚刚检查了
    猜你喜欢
    • 1970-01-01
    • 2014-11-22
    • 1970-01-01
    • 2021-12-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-12
    • 2018-07-18
    相关资源
    最近更新 更多