如何使用每个元素中的某个键将数组拆分为两个数组?

时间:2011-12-13 08:55:55

标签: php arrays

我从查询中返回了这个数组:


Array
(
    [0] => Array
        (
            [name] => 'Kathy'
            [gender] => 'female'
            [age] => 32
        )

    [1] => Array
        (
            [name] => 'Steve'
            [gender] => 'male'
            [age] => 19
        )

    [2] => Array
        (
            [name] => 'Joe'
            [gender] => 'male'
            [age] => 36
        )

    [3] => Array
        (
            [name] => 'Lynn'
            [gender] => 'female'
            [age] => 45
        )

)

我想把它分成两个数组:一个只包含女性,另一个只包含男性:

这可能与数组函数有关,还是我必须进行两次查询(我真的不想做的事情!)

7 个答案:

答案 0 :(得分:2)

快速&脏:

$females_array = array();
$males_array = array();

foreach($orginal_array as $array)
{
  if($array['gender'] == 'female')
  {
    $females_array[] = $array;
  }
  else
  {
   $males_array[] = $array;
  }
}

答案 1 :(得分:1)

当然可以!假设你的数组是$people,你可以使用:

$males = array();
$females = array();
foreach ($people as $person) {
    if ($person['gender'] == 'male') $males[] = $person;
    else $females[] = $person;
}

然后你有$males数组中的男性和$females数组中的女性。

答案 2 :(得分:1)

你可以很容易地手动完成。

$males = array();
$females = array();

foreach( $originalArray as $person ) {
    if( $person['gender'] === 'male' ) {
        $males[] = $person;
    } else {
        $females = $person;
    }
}

答案 3 :(得分:1)

编写了一个按性别分类的小功能。您可以使用switch in而不是if / else,但由于在当前问题中只有两个条件,因此没有任何理由让任何理由使代码更加聚集。此功能应该可以很好地解决您的问题。

function sortByGender( array $people )
{
    $result = array(
        'male'   => array(),
        'female' => array(),
    );

    foreach ( $people as $person )
    {
        if ( 'female' == $person['gender'] )
        {
            $result['female'] = $person;
        }
        else
        {
            $result['male'] = $person;
        }
    }

    return $result;
}

答案 4 :(得分:1)

只需循环,检查性别键的值:

$array_male   = array();
$array_female = array();
foreach ($src_array as $elem) {
  if ($elem['gender'] == 'male') {
    $array_male[] = $elem;
  } else {
    $array_female[] = $elem;
  }
}

答案 5 :(得分:0)

您需要自己编写数组函数。所有预定义的PHP数组函数仅适用于单维数组。

答案 6 :(得分:0)

您可以使用array_filter()功能执行此操作。

function check_female($arr) { return ($arr['gender'] == 'female'); }
function check_male($arr) { return ($arr['gender'] == 'male'); }

$males = array_filter($people, "check_male");
$females = array_filter($people, "check_female");