我有一个标题为$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
)
)
为什么会这样?
感谢。
答案 0 :(得分:1)
您会收到一系列密钥。来自doc
当只选择一个条目时,array_rand()返回随机密钥 条目。否则,返回随机条目的键数组。 这样做是为了也可以从阵列中挑选随机密钥 作为随机值。试图挑选比那里更多的元素 数组将导致E_WARNING级别错误,并且将为NULL 返回。
使用此代码
foreach(array_rand($all_events['data'], 2) as $key)
$new_arr[] = $all_events['data'][$key];
print_r($new_arr);
答案 1 :(得分:0)
array_rand(array,number)
从数组中返回一个随机密钥,如果您指定该函数应返回多个密钥,则返回一个随机密钥数组。
$new_arr = array_rand($all_events['data'], 2);
$ new_arr 是一个数组,包含$ all_events ['数据']的随机索引。如果$ new_arr如下所示
Array
(
[0] => 0
[1] => 2
)
这意味着随机值为$ all_events ['数据'] [0]和$ all_events ['数据'] [2]。
如果您需要从$all_events['data']
获取随机值,请尝试以下代码。
$new_arr = array_rand($all_events['data'], 2);
foreach($new_arr as $index){
print_r($all_events['data'][$index]);
}