在php 2维数组中打印随机结果

时间:2015-04-26 20:23:03

标签: php arrays random

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

$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

但我该怎么做?

1 个答案:

答案 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
)

演示:

http://ideone.com/lVJ57a