在 PHP 二维数组中打印随机结果



对于一个简单的数组,我可以用以下代码打印一个随机项目:

$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));

所以结果是:

文本 1 或文本 2 或文本 4

或者另一个例子:

 if($type == 'fun')
       print random($arr($type));

结果:文本 3 或文本 6

但是我该怎么做呢?

正如@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
)

演示:

http://ideone.com/lVJ57a

最新更新