【问题标题】:Get random item after applying strlen in for loop在for循环中应用strlen后获取随机项
【发布时间】:2016-06-04 22:28:17
【问题描述】:

在循环 FOR 中应用 strlen 以查看单词大于 5 个字符后,我试图获取数组的随机元素,但目前我没有得到预期的结果.

我的代码如下:

$input = array("Neo", "Morpheus", "Trinity", "Cypher", "Tank");

for ($i=0; $i < count($input); $i++) {

   if(strlen($input[$i]) > 5)
   {
      $rand_keys = array_rand($input, 1);
      echo $input[$rand_keys];
   }
}

但当时未能获得随机元素,我返回了几个,甚至函数都没有应用 strlen

在应用strlen验证元素大于5个字符后,我可以得到一个随机数组元素吗?

感谢朋友。

【问题讨论】:

  • 我不太明白你想在这里做什么。只是得到一个随机元素?一个长度超过 5 个字符?请展示你现在得到什么以及你期望得到什么。
  • 嗨。目前我得到了这个i.imgur.com/yeQxHaF.jpg 我唯一拥有的是一个随机元素数组,但它超过了 5 个字符。

标签: php loops for-loop strlen


【解决方案1】:

首先,使用array_filter()创建一个只包含长度超过5个字符的元素的新数组:

$filteredInput = array_filter($input, function ($str) {
    return strlen($str) > 5;
});

然后,按照您最初的想法使用array_rand()

$randomElement = $filteredInput[array_rand($filteredInput, 1)];

【讨论】:

    【解决方案2】:
    for ($i=0; $i < count($input); $i++){
    
        $rand_keys = array_rand($input, 1);
        if (strlen($input[$rand_keys]) > 5){
            echo $input[$rand_keys];
        }
    
    }
    

    像这样?

    【讨论】:

    【解决方案3】:

    用长度大于5的元素创建新数组,并通过shuffle函数随机化

    $res = array_filter($input, function ($i) { return strlen($i) > 5; });
    shuffle($res);
    

    如果你只想要一个元素,你可以通过$elem = array_shift($res)获取它

    demo

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-03-30
      • 1970-01-01
      • 2012-10-20
      • 1970-01-01
      • 2020-08-05
      • 2012-10-29
      • 2012-11-07
      • 2013-10-28
      相关资源
      最近更新 更多