对于一个简单的数组,我可以使用以下代码打印随机项:
$key = array_rand($arr);
$value = $arr[$key];
但我需要用二维数组和一个条件来做。
我有一个像这样的数组
$arr = array ( 'news' => 'text1',
'news' => 'text2',
'fun' => 'text3',
'news' => 'text4',
'echo' => 'text5',
'fun' => 'text6');
我想要像php中的这个算法一样
if($type == 'news')
print random($arr($type));
结果如下:
text1或text2或text4
或其他例子:
if($type == 'fun')
print random($arr($type));
结果:text3或text6
但我该怎么做?
答案 0 :(得分:0)
正如@rizier123所指出的那样:
你不能有多个同名的钥匙!每一个虽然约 如果有多个键,你如何识别每个值 同名?!
您的$arr
密钥必须是唯一的,下面的代码反映了这一点。
/**
* multidimensional_array_rand()
*
* @param array $array
* @param integer $limit
* @return array
*/
function multidimensional_array_rand( $array, $limit ) {
uksort( $array, 'callback_rand' );
return array_slice( $array, 0, $limit, true );
}
/**
* callback_rand()
*
* @return bool
*/
function callback_rand() {
return rand() > rand();
}
即:
$arr = array ( 'news1' => 'text1',
'news2' => 'text2',
'fun' => 'text3',
'news4' => 'text4',
'echo' => 'text5',
'fun' => 'text6');
print_r( multidimensional_array_rand( $arr, 1 ) );
输出:
Array
(
[news4] => text4
)
演示: