2017-08-24 56 views
0

好的,很抱歉生病重写这个,因为我试图用一个简单的例子,但我相信它更复杂,所以即时通讯设法让所有符合特定条件的用户,然后把它们放入一个数组,在此之后洗牌顺序并将用户放在数组块中。如何访问多维数组内部的值php

从那里即时通讯做一个if/else语句说,如果每块充满不存在的ID,但即时通讯有麻烦的ID:

//Get all users who are eligable 
$eligable_users = get_users('meta_key=eligable&meta_value=1'); 


//Set all eligable users into an array 
$eligable_user_array = array(); 
foreach ($eligable_users as $users) { 
$eligable_user_array[] = $users; 
} 

//Shuffle users among arrays 
shuffle($eligable_user_array); 


//Change this to adjust chunk size 
$winning_array_chunk_size = 2; 

//Create array chunks 
$array_chunk = array_chunk($eligable_user_array , $winning_array_chunk_size , false); 


//Foreach array chunk 
foreach($array_chunk as $individual_winner_chunk) { 


//If a chunk isnt filled igonre 
if(sizeof($individual_winner_chunk) < $winning_array_chunk_size) { 
    //Users in this chunk arnt entered into prize draw 
} 

//For each filled chunk get a user 
else{ 
     //print_r($individual_winner_chunk); 

     //Get randomised users from each chunk 
     $random_user_from_chunk = array_rand($individual_winner_chunk , 1); 
     foreach($random_user_from_chunk as $userchunk){ 
      echo $userchunk->data->ID; 
     } 


    } 

这不是输出正确的部分:

回声$ userchunk-> DATA-> ID;

+0

的输出是什么?请将其添加到问题中。 – Kris

+0

输出为仅仅指刚空白但是如果我取消注释的print_r在该输出看起来象底部: rray ( [0] => WP_User对象 ( [数据] => stdClass的对象 ( [ID] => 7 – Dgeorgex000000

+0

问题是你如何使用array_rand。请检查编辑答案。 – Kris

回答

1

您正在错误地使用array_rand函数。

array_rand返回随机密钥。 检查此处获得更多信息:http://php.net/manual/en/function.array-rand.php

所以,如果你只需要一个键,然后做:

$random_user_from_chunk = array_rand($individual_winner_chunk , 1); 

    echo $individual_winner_chunk[$random_user_from_chunk]->data->ID; 

如果你需要更多的随机用户,增加array_rand数选项

$random_user_from_chunk = array_rand($individual_winner_chunk , 2); 
echo $individual_winner_chunk[$random_user_from_chunk[0]]->data->ID 
echo $individual_winner_chunk[$random_user_from_chunk[1]]->data->ID 
+2

应该是 - > data-> ID – Aknosis

+0

是的,编辑。谢谢! – Kris

+0

我试过,但它没有输出任何东西:( – Dgeorgex000000

-1

如果您的$userlist值是从JSON中提取的,那么您可以简单地应用将对象更改为关联数组:

$random_user = array_rand(json_decode($userlist, TRUE), 1);

,然后你可以作为访问:

foreach($random_user as $individual_user) { 
echo $individual_user['data']['ID']; 
}