为什么array_rand()没有返回预期的数组输出



我有一个标题为$all_events的数组,如下所示:

Array
(
    [status] => 1
    [data] => Array
        (
            [0] => Array
                (
                    [group_name] => 
                    [event_id] => 201
                    [view_id] => 0
                    [is_featured] => 0
                    [is_sponsor] => 0
                )
            [1] => Array
                (
                    [group_name] => 
                    [event_id] => 235
                    [view_id] => 0
                    [is_featured] => 0
                    [is_sponsor] => 0
                )
            [2] => Array
                (
                    [group_name] => 
                    [event_id] => 236
                    [view_id] => 0
                    [is_featured] => 0
                    [is_sponsor] => 0                   
                )
        )
    [msg] => Success
)

在结果数组中,我想要内部数组['data']中的任意两个元素,因此我编写了以下代码:

$new_arr = array_rand($all_events['data'], 2);
print_r($new_arr); die;

我得到以下奇怪的输出:

Array
(
    [0] => 0
    [1] => 2
)

预期的结果应该如下(如果第一个和最后一个元素是随机选择的):

Array
            (
                [0] => Array
                    (
                        [group_name] => 
                        [event_id] => 201
                        [view_id] => 0
                        [is_featured] => 0
                        [is_sponsor] => 0
                    )        
                [2] => Array
                    (
                        [group_name] => 
                        [event_id] => 236
                        [view_id] => 0
                        [is_featured] => 0
                        [is_sponsor] => 0                   
                    )
)

为什么?

谢谢。

接收键数组。从doc

当只选择一个条目时,array_rand()返回随机项的键值条目。否则,返回随机条目的键数组。这样做是为了也可以从数组中选择随机键作为随机值。试着选择更多的元素数组将导致E_WARNING级别的错误,NULL将导致E_WARNING级别的错误返回。

使用此代码

foreach(array_rand($all_events['data'], 2) as $key)
    $new_arr[] = $all_events['data'][$key];
print_r($new_arr);

array_rand(array,number) 从数组返回一个随机键,或者如果指定函数应该返回多个键,则返回一个随机键数组。

$new_arr = array_rand($all_events['data'], 2);

$new_arr是一个包含$all_events['data']随机索引的数组。如果$new_arr如下

Array
(
    [0] => 0
    [1] => 2
)

表示随机值为$all_events['data'][0]和$all_events['data'][2]。

如果您需要从$all_events['data']中获得随机值,请尝试以下代码。

$new_arr = array_rand($all_events['data'], 2);
foreach($new_arr as $index){
    print_r($all_events['data'][$index]);
}

相关内容

  • 没有找到相关文章

最新更新