Luq*_*sus 7 php arrays wordpress
我试图生成数组作为比较2阵列的结果:第一个数组有更多的元素,如:
array1: {
0 => "car1"
1 => "car2"
2 => "car3"
3 => "car4"
4 => "car5"
}
Run Code Online (Sandbox Code Playgroud)
和第二个数组没有所有元素:
array2: {
0 => "car1"
1 => "car4"
2 => "car5"
}
Run Code Online (Sandbox Code Playgroud)
因此,所有可能的类别(array1)和分配给post(array2)的类别(它是一个WordPress的东西).
我试图比较那些数组(但不是与array_diff()给我元素值的函数而不是boolean),并得到结果为true/false.所以我想比较数组的每个值并生成数组映射,或者使用array_combine()函数来获取这样的数组:
result_array: {
"car1": true,
"car2": false,
"car3": false
}
Run Code Online (Sandbox Code Playgroud)
等等...
输出数组的重要性包括所有类别及其结果(true,false).
有没有简单的方法可以做到或者它可能是我可以使用的功能?
数组很有趣!
PHP有一个TON的数组函数,所以有很多潜在的解决方案.
我想出了这个作为个人挑战,它不使用循环,过滤器或地图.
此解决方案使用array_intersect查找两个数组中存在的值,然后使用array_values和array_fill_keys将它们转换为填充TRUEor的FALSE最终关联数组,最后使用array_merge将它们组合到一个数组中:
$array1 = array( 0 => "car1", 1 => "car2", 2 => "car3", 3 => "car4", 4 => "car5");
$array2 = array( 0 => "car1", 1 => "car4", 2 => "car5" );
// Find all values that exist in both arrays
$intersect = array_intersect( $array1, $array2 );
// Turn it into an associative array with TRUE values
$intersect = array_fill_keys( array_values($intersect), TRUE );
// Turn the original array into an associative array with FALSE values
$array1 = array_fill_keys( array_values( $array1 ), FALSE );
// Merge / combine the arrays - $intersect MUST be second so that TRUE values override FALSE values
$results = array_merge( $array1, $intersect );
Run Code Online (Sandbox Code Playgroud)
var_dump( $results ); 结果是:
array (size=5)
'car1' => boolean true
'car2' => boolean false
'car3' => boolean false
'car4' => boolean true
'car5' => boolean true
Run Code Online (Sandbox Code Playgroud)