我有这个字符串:
$a="house1,car1,phone1*house2,car2,phone2*house3,car1,phone3*house4,car3,phone3*";
我希望按顺序展示,同一辆车的房子,你可以看到重复的元素叫做“car1”
我希望得到这个:
CAR 1 IN THIS HOUSE
house1,car1,phone1
house3,car1,phone3
CAR 2 AND 3 IN HOUSES 2 AND 4
house2,car2,phone2
house4,car3,phone3
正如您所看到的, car1 在2个不同名称的房屋中重复,我希望以这种方式订购结果
我尝试以多种方式执行此操作,在foreach循环中使用array_diff,array_unique,使用explode和array_intersect,结果非常糟糕
如果有人可以在这里帮助我,谢谢,因为我不知道如何比较和显示结果,直到
感谢先进和关心社区
答案 0 :(得分:0)
试试这个(在php 5.6中测试):
<?php
// input string
$a="house1,car1,phone1*house2,car2,phone2*house3,car1,phone3*house4,car3,phone3*";
// split on '*' to get tuples
$tuples = explode('*', $a);
// ignore empty tuples (trailing '*' in input string)
$tuples = array_filter($tuples);
// split each tuple on ',' to get individual values
function splitTuples($tuple) {
return explode(',', $tuple);
}
$tuples = array_map('splitTuples', $tuples);
// sort tuples by the 2nd value
function sortArraysBySecondValue($a, $b) {
if ($a[1] < $b[1]) {
return -1;
}
if ($a[1] > $b[1]) {
return 1;
}
return 0;
}
usort($tuples, 'sortArraysBySecondValue');
// print tuples
foreach ($tuples as $tuple) {
echo implode(',', $tuple) . "\n";
}
输出是:
house1,car1,phone1
house3,car1,phone3
house2,car2,phone2
house4,car3,phone3