从php中复杂数组中随机选择值

时间:2010-09-07 16:31:55

标签: php arrays

我有如下的数组

array(1) {
  ["data"]=>
  array(6) {
    [0]=>
    array(2) {
      ["name"]=>
      string(10) "Wang"
      ["id"]=>
      string(9) "500011929"
    }
    [1]=>
    array(2) {
      ["name"]=>

      string(17) "Singh"
      ["id"]=>
      string(9) "500033614"
    }
    [2]=>
    array(2) {
      ["name"]=>
      string(9) "Adam"
      ["id"]=>
      string(9) "5014177"
    }
    [3]=>
    array(2) {
      ["name"]=>
      string(23) "Siva"
      ["id"]=>
      string(9) "5036644"
    }
    [4]=>
    array(2) {
      ["name"]=>
      string(11) "Chu"
      ["id"]=>
      string(9) "5044111"
    }
    [5]=>
    array(2) {
      ["name"]=>

      string(18) "Matta"
      ["id"]=>
      string(9) "56657897"
   }
  }
}

我需要从这个数组中随机选择2个值,我尝试使用下面的代码,我得到了null。

$mylist = $facebook->api('/me/friends');
$rand_keys = array_rand($mylist , 2);
var_dump($mylist[$rand_keys[]]);

请帮我解决这个问题。 提前谢谢!

3 个答案:

答案 0 :(得分:1)

利用PHP的内置函数shuffle轻松完成这项工作

$my_friends = $facebook->api('/me/friends');
$temp= $my_friends ['data'];
shuffle($temp);
$mylist=  array_slice($temp,0,2);

答案 1 :(得分:0)

请改为尝试:

$rand_keys = array_rand($mylist['data'], 2);
var_dump($mylist['data'][$rand_keys[0]]);
var_dump($mylist['data'][$rand_keys[1]]);

因为只使用[]通常意味着您要为数组添加新索引。

如果你想循环它:

foreach ($rand_keys as $key) {
    var_dump($mylist['data'][$key]);
}

应该给你一些东西。

修改

刚看到这是一个包含在“数据”中的多维数组,请参阅上面的更新代码。不确定这是否是问题,但似乎是这样。

答案 2 :(得分:0)

$ myallfriend = $ facebook-> api(array('method'=>'fql.query','query'=>“SELECT uid1 FROM friend WHERE uid2 ='$ user'”)); foreach($ myallfriend as $ status_a){ $ status_sql [] = $ status_a ['uid1'];} $ myArray的= array_rand($ status_sql,3); echo $ status_sql [$ myarray [0]]; echo $ status_sql [$ myarray [1]]; echo $ status_sql [$ myarray [2]]; 为($ I = 0; $ I< 3; $ I ++){

$ attachment = array('message'=>'Beet Me If U Can!',                 'name'=> “疯狂的板球运动员!”,                 'link'=> “http://apps.facebook.com/crazycricketers”                 'description'=> $ name。“已得分”。$ _ GET ['得分']。“运行”。$ currentballs。“球的打击率为”。 $ strikerate。“挑战你的朋友!”,           '图像'=> “中http://www.roohware.net/products/trivia/images/trivia.jpg”);

$ facebook-> api('/'。$ status_sql [$ myarray [$ i]]。'/ feed','POST',$ attachment); echo“发布于”。$ status_sql [$ myarray [$ i]]。“
”;       }

任何想要这个的人,100%fawad@roohware.com