【问题标题】:Getting a random result from foreach loop then doing foreach on the random results从 foreach 循环中获取随机结果,然后对随机结果执行 foreach
【发布时间】:2016-09-04 11:35:05
【问题描述】:

我正在尝试对一组用户执行 foreach 循环,然后从每 5 个用户中随机选择 1 个用户并再次执行 foreach 循环,结果显示用户 ID,以下工作直到第二个 foreach 点这引发了一个错误,谁能告诉我我做错了什么。

提前致谢。

$eligable_users = get_users(array(

  'meta_key' => 'eligable',
  'meta_value' => '0'

));


$user_chunks = array_chunk($eligable_users, 4);

foreach($user_chunks as $individual_user_chunk) {

    $random_result = array_rand($individual_user_chunk ,1);

    foreach($random_result as $user) {
        echo $user->ID . "</br>";
    }

} 

【问题讨论】:

  • 您遇到的错误是什么?错误指向哪一行?代码的意图是什么?随机消耗所有数组值?您能否提供实际$eligable_users 数组的样本,该数组给出了重现问题的错误?也可以在帮助中心查看MCVE
  • 错误是:警告:为 foreach() 提供的参数无效,代码应获取用户数组,将数组分成 5 个块,从 5 个块中获取 1 个随机结果,然后对每个随机结果执行另一个 foreach (foreach($random_result as $user)) 以回显用户的用户 ID
  • 所以基本上你只想要 5 个随机用户 ID?我认为在这里使用两个循环没有意义。
  • 那你为什么用array_chunk(..., 4)呢?这给了你 4 个用户,而不是 5 个。
  • 不,数组块的第二个参数是size,而不是偏移量。 See the manual for details.

标签: php arrays wordpress foreach


【解决方案1】:

你的第二个循环实际上没有意义,因为你会得到一个结果。当您只有一个来自 array_rand() 的结果时,它会返回一个键而不是数组。

当只选择一个条目时,array_rand() 返回随机条目的密钥。否则,将返回随机条目的键数组。

Source: php.net/array-rand

foreach($user_chunks as $individual_user_chunk) {

    $random_result = array_rand($individual_user_chunk ,1);

    echo $individual_user_chunk[$random_result]->ID . "<br>";

} 

【讨论】:

  • 上面的内容差不多了,但问题是当数组被分成需要读取的块时:数组 1 结果 1 结果 2 结果 3 结果 4 结果 5 数组 2 结果 6 结果 7 等等。 .. 上面的代码在随机化数组 2 时随机化“结果 1”,而它应该只从“结果 6,结果 7”等中随机化
  • 我完全不知道你所说的“Array 1 result 1”是什么意思。您能否详细说明这与您的代码有何具体关系?您的问题中没有此类规定的要求。
  • 希望以上内容有意义,顺便感谢您的帮助
  • 不,它没有,因为该代码没有做任何这样的事情。也许您修改了导致这种情况的代码或数据的某些方面,但这肯定不是我的答案。
【解决方案2】:
$chunks = array_chunk($eligable_users, 5);

foreach($chunks as $chunk) {
    $r = array_rand($chunk);
    $user = $chunk[$r];
    echo $user->ID . "</br>";
} 

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-02-05
    • 2015-09-18
    • 2018-05-15
    • 2012-09-03
    • 1970-01-01
    • 2019-09-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多