Php 搜索数组并根据结果创建数组

Php 搜索数组并根据结果创建数组,php,arrays,Php,Arrays,我在php中有一个主题的关联数组,第二个值为1或0 e、 g:([数学]=>1,[科学]=>0,[英语]=>1) 如何创建值为1的新项目数组?i、 e.(数学、英语) 谢谢 这应该可以做到(但需要PHP5.3)-请参阅。如果您可以保证值只能是1或0,那么您可以使用数组_diff()来拾取所有不是0的值 $array = array( 'maths' => 1, 'science' => 0, 'english' =>

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

e、 g:
([数学]=>1,[科学]=>0,[英语]=>1)

如何创建值为1的新项目数组?i、 e.(数学、英语)

谢谢


这应该可以做到(但需要PHP5.3)-请参阅。

如果您可以保证值只能是1或0,那么您可以使用数组_diff()来拾取所有不是0的值

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

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

var_dump($newArray);
编辑

或相应的数组_intersect()方法来匹配的每个值:

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

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

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

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

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

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