Я ищу простое решение для создания немного функции, чтобы объединить два массива со значением CONCAT (я использую его для создания HTML атрибута тега):Как объединить два массива и Concat значения с PHP
$default["class"] = "red";
$new["class"] = "green";
$new["style"] = "display:block"
результат:
$res["class"] = "red green";
$res["style"] = "display: block";
и еще один вариант: если $new
не является массивом, просто CONCAT с $default["class"]
(если это существует), а другая сторона: если $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;"));
Спасибо. Ваша функция отлично работает с атрибутом класса, но очищает '$ default [" style "]' и оставляет только значение '$ new [" style "]'. – rastafest
Я добавил исправление. Я не знал, что вы можете передать стиль как значение по умолчанию, как класс – Nick
Извините, я смущен в конце :) Эта функция отлично работает для меня. Благодаря!:) – rastafest