我有一个像这样的
的真/假值数组$bools = array(
0 => true,
1 => false,
2 => true,
3 => true,
4 => false
);
和另一个数组或值,如
$names = array(
0 => 'joe',
1 => 'bob',
2 => 'steve',
3 => 'mario',
4 => 'george'
);
我需要的是获得一个返回数组(在PHP中),它只包含数组2中与数组1相比的真值。所以最终数组将是:
$result = array(
0 => 'joe',
1 => 'steve',
2 => 'mario'
);
答案 0 :(得分:3)
首先,您可以使用array_filter()
过滤掉第一个数组中的所有错误值。因此,您最终将得到一个包含您要保留在另一个数组中的所有键的数组。
然后你可以使用array_intersect_key()
来获取第二个数组和过滤后的第一个数组的交集,例如。
$result = array_intersect_key($arrayTwo, array_filter($arrayOne));
答案 1 :(得分:3)
首先,使用array_combine()
组合数组:
http://%{HTTP_HOST}/example1-example2-example3-example4
这将导致:
array_combine( $names, $bools );
然后,使用array_keys()
提取所需名称:
array (
joe => true,
bob => false,
steve => true,
mario => true,
george => false)
这只会返回值为$result = array_keys( array_combine( $names, $bools ), true );
的键:
true
答案 2 :(得分:3)
试试这段代码,我只编写代码。根据您的要求进行定制。
$a = array (true,false,true,true,false);
$b = array ('one','two','three','four','five');
$c = array();
for ( $i=0; $i < sizeof($a); $i++) {
if ( $a[$i] == 'true' ){
$c[$i] = $b[$i]; //store output values into another array
}
}
答案 3 :(得分:0)
$a = [true,false,true,true,false];
$b = ['bob','jiw','mow','moe','windy'];
$final_arr = array();
foreach($a as $k => $v){
if($v)$final_arr[] = $b[$k];
}
print_r($final_arr);
答案 4 :(得分:0)
以下是基本foreach()
循环的示例:
$bools = array(
0 => true,
1 => false,
2 => true,
3 => true,
4 => false
);
$names = array(
0 => 'joe',
1 => 'bob',
2 => 'steve',
3 => 'mario',
4 => 'george'
);
$yourArr = array();
foreach ($names as $key => $value) {
if($bools[$key] == true){
$yourArr[] = $value; // store required values in your required array
}
}
echo "<pre>";
print_r($yourArr);
<强>结果:强>
Array
(
[0] => joe
[1] => steve
[2] => mario
)
答案 5 :(得分:-1)
$result = array_filter(array_combine($keys, $values));
答案 6 :(得分:-1)
$bools = array(
true,
true,
false,
false,
true,
);
$names = array(
'a',
'b',
'c',
'd',
'e',
);
$result = array_values(array_intersect_key($names, array_filter($bools)));
dumpr($result);
结果:
array(3) {
[0] = string(1) "a"
[1] = string(1) "b"
[2] = string(1) "e"
}