php二维数组找出相同的key,拼接value
程序员文章站
2022-05-25 11:29:16
...
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
推荐阅读
-
PHP 如何获取二维数组中某个key的集合
-
PHP将二维数组某一个字段相同的数组合并起来的方法
-
PHP 如何获取二维数组中某个key的集合
-
php中使用key,value,current,next和prev函数遍历数组的方法
-
PHP 如何获取二维数组中某个key的集合
-
php数组练习之----查询数组中某key的键值相同的个数、数组的格式转换、合并数组
-
php-怎样删除二维数组中相同的一位数组 并保持相同键名 求大神写个函数
-
php中使用key,value,current,next和prev函数遍历数组的方法
-
PHP将二维数组某一个字段相同的数组合并起来的方法_PHP
-
php二维数组按指定键值key排序的例子