我有一个包含以下格式数据的php数组。可能只有唯一值和一个NULL值,这需要与其他值匹配的负值。
flag
我想将其转换为以下内容:
$colors = array_unique([
NULL,
"red",
"black"
]);
我怎样才能做到这一点?
我无法理解如何在php中实现这一点,我尝试了不同的foreach循环与数组的组合,但我不能动态地这样做,以便第一个$converted = [
"NOT LIKE '%red%' AND NOT LIKE '%black%'",
"LIKE '%red%' AND NOT LIKE '%black%'",
"LIKE '%black%' AND NOT LIKE '%red%'"
];
数组可以扩展值,但它保持不变相同的原则(见同一结构中扩展数据的例子2)。
示例2
$colour
$colors = array_unique([
NULL,
"red",
"black",
"purple",
"orange"
]);
答案 0 :(得分:2)
你们去吧
<?php
function my_array_unique_query($values){
$copy = $values;
$query = array();
foreach($values as $a){
$copy = remove_null_and_like($values, $a);
$q = "";
if(!empty($a) && !is_null($a)){
$q .= "LIKE %".$a."%'";
}else{
$q .= "NOT LIKE ".array_pop($copy);
}
if(count($copy) > 0){
$q .= "AND NOT LIKE '".implode(' AND NOT LIKE ', $copy);
}
$query[] = $q;
}
return $query;
}
function remove_null_and_like($values, $like){
$return = array();
foreach($values as $a){
if(!empty($a) && !is_null($a) && $a != $like){
$return[] = "%".$a."%";
}
}
return $return;
}
print_r(my_array_unique_query([
NULL,
"red",
"black"
]));
print_r(my_array_unique_query([
NULL,
"red",
"black",
"purple",
"orange"
]));
print_r(my_array_unique_query([
NULL,
"red"
]));