从数组中过滤数据 - php

时间:2013-12-11 13:28:17

标签: php arrays string

我有一个包含朋友数据的数组,包括他们的姓名,身份,性别。我想从具有相反性别的数组中提取数据。 例如 - 我的性别是“男性”

返回数据 -

[118]=> object(stdClass)#121 (3) {
    ["name"]=> string(9) "Rawa Su" 
    ["gender"]=> string(4) "male" 
    ["id"]=> string(15) "1000019100" 
} 
[119]=> object(stdClass)#122 (3) {
    ["name"]=> string(11) "Anil Gaj" 
    ["gender"]=> string(4) "male" 
    ["id"]=> string(15) "1000034656" 
} 
[120]=> object(stdClass)#123 (3) {
    ["name"]=> string(13) "Ankur Tri" 
    ["gender"]=> string(4) "male" 
    ["id"]=> string(15) "1000022271" 
} 
[121]=> object(stdClass)#124 (3) {
    ["name"]=> string(13) "Chuck Ell" 
    ["gender"]=> string(4) "male" 
    ["id"]=> string(15) "10000185038" 
} 
[122]=> object(stdClass)#125 (3) {
    ["name"]=> string(15) "Madhuri Tat" 
    ["gender"]=> string(6) "female" 
    ["id"]=> string(15) "1000880932" 
}

现在我想随机获取性别=女性的数据。我不知道如何做到这一点。任何帮助,将不胜感激。谢谢。

1 个答案:

答案 0 :(得分:2)

好吧,假设您的所有数据数组都名为$ data:

$res = array();
foreach($data as $person) {
     if(strcasecmp($person['gender'], 'female') == 0)
          $res[] = $person;
}

现在你有一个名为$ res的新数组,其中包含所有女性。

尽管如此,我会在从数据库中获取sql期间过滤原始数据, 这应该是同样的努力,并在长时间的观点中提供更多的表现。

如果您现在想要随机拥有一位女性,请执行以下操作:

$number_of_persons = count($res);
$random_female = $res[rand(0, $number_of_persons-1)];

为什么-1?

数组从索引0开始,所以你需要总人数为-1。