我在php中有一个关联的数组,其中1或0作为第二个值。
例如:([maths] => 1, [science] => 0, [english] => 1)
如何创建值为1的新数组?即(数学,英语)
由于
答案 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;
}
}