php二维数组找出相同的key,拼接value
程序员文章站
2024-01-22 11:45:58
...
array(
array(
"ShopID" => "C024",
"Name" => "a",
"ListNo" => 13343
),
array(
"ShopID" => "C024",
"Name" => "c",
"ListNo" => 13343
),
array(
"ShopID" => "C024",
"Name" => "b",
"ListNo" => 13342
),
array(
"ShopID" => "C024",
"Name" => "d",
"ListNo" => 13342
),
array(
"ShopID" => "C024",
"Name" => "e",
"ListNo" => 13346
),
array(
"ShopID" => "C024",
"Name" => "f",
"ListNo" => 13346
)
);
ListNo相同的值重新组织成一个数组,实现的效果:
array("ShopID" => "C024", "Name" => array("a", "c"), "ListNo" = 13343);
回复内容:
array(
array(
"ShopID" => "C024",
"Name" => "a",
"ListNo" => 13343
),
array(
"ShopID" => "C024",
"Name" => "c",
"ListNo" => 13343
),
array(
"ShopID" => "C024",
"Name" => "b",
"ListNo" => 13342
),
array(
"ShopID" => "C024",
"Name" => "d",
"ListNo" => 13342
),
array(
"ShopID" => "C024",
"Name" => "e",
"ListNo" => 13346
),
array(
"ShopID" => "C024",
"Name" => "f",
"ListNo" => 13346
)
);
ListNo相同的值重新组织成一个数组,实现的效果:
array("ShopID" => "C024", "Name" => array("a", "c"), "ListNo" = 13343);
$arr = array(
array(
"ShopID" => "C024",
"Name" => "a",
"ListNo" => 13343
),
array(
"ShopID" => "C024",
"Name" => "c",
"ListNo" => 13343
),
array(
"ShopID" => "C024",
"Name" => "b",
"ListNo" => 13342
),
array(
"ShopID" => "C024",
"Name" => "d",
"ListNo" => 13342
),
array(
"ShopID" => "C024",
"Name" => "e",
"ListNo" => 13346
),
array(
"ShopID" => "C024",
"Name" => "f",
"ListNo" => 13346
)
);
$lists = array_column($arr, 'ListNo');
$lists = array_flip(array_flip($lists));
$result = array();
foreach ($lists as $k => $v) {
$res = array();
foreach ($arr as $key => $val) {
if ($val['ListNo'] == $v) {
if (count($res) == 0) {
$res = $val;
} else {
if ($res['ShopID'] != $val['ShopID']) {
if (!is_array($res['ShopID'])) {
$res['ShopID'] = array($res['ShopID'], $val['ShopID']);
} else {
$res['ShopID'][] = $val['ShopID'];
}
}
if ($res['Name'] != $val['Name']) {
if (!is_array($res['Name'])) {
$res['Name'] = array($res['Name'], $val['Name']);
} else {
$res['Name'][] = $val['Name'];
}
}
}
}
// var_dump($res);
}
$result[] = $res;
}
var_dump($result);
结果如下:
array (size=3)
0 =>
array (size=3)
'ShopID' => string 'C024' (length=4)
'Name' =>
array (size=2)
0 => string 'a' (length=1)
1 => string 'c' (length=1)
'ListNo' => int 13343
1 =>
array (size=3)
'ShopID' => string 'C024' (length=4)
'Name' =>
array (size=2)
0 => string 'b' (length=1)
1 => string 'd' (length=1)
'ListNo' => int 13342
2 =>
array (size=3)
'ShopID' =>
array (size=2)
0 => string 'C024' (length=4)
1 => string 'C025' (length=4)
'Name' =>
array (size=3)
0 => string 'e' (length=1)
1 => string 'f' (length=1)
2 => string 'g' (length=1)
'ListNo' => int 13346
遍历数组,遍历时把ListNo作为Key,然后判断下如果isset同样的Key就对Name做合并操作,没有就直接写入,到最后array_merge一下清除掉数组的Key
上一篇: php5.4.13在ubuntu12.04上的配备
下一篇: 字符串数组,删除数组元素_PHP教程