我正在寻找一个简单的解决方案来创建一个小的功能合并两个数组与值的concat Concat的值(我使用它来创建HTML标记属性):如何合并两个数组与PHP
$default["class"] = "red";
$new["class"] = "green";
$new["style"] = "display:block"
其结果是:
$res["class"] = "red green";
$res["style"] = "display: block";
和一个选择: 如果$new
不是数组,只是用$default["class"]
的concat(如果这存在),而另一侧:如果$default
是一个简单的字符串,转换为数组:$default["class"] = $default
;
我创建了一个功能,但想用一种更简单,更短的方式为:
function attrMerge($default, $new=""){
$res = array();
if(!is_array($default)) {
$res["class"] = $default;
}
else {
$res = $default;
}
if($new !== ""){
if(!is_array($new)) {
if(isset($res["class"])){
$res["class"].= " ".$new;
}
}
else {
foreach($new as $key=>$value) {
if(isset($res[$key])) {
$res[$key].= " ".$value;
}
else {
$res[$key] = $value;
}
}
}
}
return $res;
}
$a = attrMerge("red", array("class"=>"green", "style"=>"display: block;"));
谢谢。你的函数可以很好的使用class属性,但是清除'$ default [“style”]'并且只保留'$ new [“style”]'值。 – rastafest
我加了修正。我不知道你可以像默认值一样将类型传递给类 – Nick
对不起,我在最后感到困惑:)这个函数对我很好。谢谢!:) – rastafest