搜索数组并从结果中创建数组

时间:2011-03-24 20:39:07

标签: php arrays

我在php中有一个关联的数组,其中1或0作为第二个值。

例如:([maths] => 1, [science] => 0, [english] => 1)

如何创建值为1的新数组?即(数学,英语)

由于

4 个答案:

答案 0 :(得分:2)

$output = array_filter($input, function($v) {
    return $v == 1;
});

这应该可以解决问题(但需要PHP 5.3) - 请参阅array_filter()

答案 1 :(得分:1)

$results = array();
foreach($array as $k=>$v){
  if($v == 1){
    $results[] = $k;
  }
}

答案 2 :(得分:1)

如果你可以保证值只有1或0,那么你可以做一个array_diff()来获取 0的每个值。

$array = array( 'maths' => 1,
                'science' => 0,
                'english' => 1);

$newArray = array_diff($array, array(0));

var_dump($newArray);

修改

或相应的array_intersect()方法匹配 的每个值1:

$newArray2 = array_intersect($array, array(1));

var_dump($newArray2);

如果希望原始键成为新数组中的值,则只需将表达式包装在array_keys()函数中。 e.g。

$newArray2 = array_keys(array_intersect($array, array(1)));

答案 3 :(得分:0)

$array2 = array()

foreach ( $array as $key=>$val ){
    if($val == 1)
    {
        $array2[] = $key;
    }
}