我有一个标题为$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]);
}