PHP - объединить по значению элементов в массиве
Как в массиве
array(4) {
[0]=> string(21) "itd-sd|100.99.22.12"
[1]=> string(32) "itd-sd.site.ru|100.99.22.12"
[2]=> string(21) "mt-sd|192.168.0.1"
[3]=> string(32) "mt-sd|192.168.0.22"
}
Объединить по значению элементов, чтобы был вот такой результат:
array(2) {
[0]=> string(21) "itd-sd|100.99.22.12|itd-sd.site.ru"
[1]=> string(21) "mt-sd|192.168.0.1|192.168.0.22"
}
Т.е мне нужно если в значении элементов есть общее значение - то "склеить" эти элементы в один через разделитель. В первом случае объединяем по значению "100.99.22.12", во втором случае "mt-sd". Натолкните на вариант решения.
Ответы (1 шт):
Автор решения: splash58
→ Ссылка
Вот вам заготовка, дальше думайте над критериями
$arr = [
"itd-sd|100.99.22.12",
"itd-sd.site.ru|100.99.22.12" ,
"mt-sd|192.168.0.1" ,
"mt-sd|192.168.0.22"
];
$res = [];
$arr = array_map(function ($x) { return explode('|', $x); }, $arr);
for($i=0; $i<count($arr); $i++) {
for($j= $i+1; $j<count($arr); $j++) {
if(array_intersect($arr[$i],$arr[$j])) {
$res[] = implode('|', array_unique(array_merge($arr[$i],$arr[$j])));
}
}
}
print_r($res);
[
[0] => itd-sd|100.99.22.12|itd-sd.site.ru
[1] => mt-sd|192.168.0.1|192.168.0.22
]