我得到了一个像这样的真/假值数组
$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'
);
首先,使用array_combine()
组合数组:
array_combine( $names, $bools );
这将导致:
array (
joe => true,
bob => false,
steve => true,
mario => true,
george => false)
然后,使用array_keys()
:提取所需名称
$result = array_keys( array_combine( $names, $bools ), true );
这将只返回值为true
:的密钥
$result = array(
0 => 'joe',
1 => 'steve',
2 => 'mario'
);
首先,您可以使用array_filter()
从第一个数组中筛选出所有false值。因此,您将得到一个数组,该数组包含您希望保留在另一个数组中的所有键。
然后,您可以使用array_intersect_key()
从第二个数组和过滤后的第一个数组中获得密钥的交集,例如
$result = array_intersect_key($arrayTwo, array_filter($arrayOne));
试试这个代码,我只写了一些示例代码。根据您的需求进行定制。
$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
}
}
$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);
以下是具有基本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
)
$result = array_filter(array_combine($keys, $values));
$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"
}