Maison >développement back-end >tutoriel php >php二维数组找出相同的key,拼接value
<code>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 ) );</code>
ListNo相同的值重新组织成一个数组,实现的效果:
<code>array("ShopID" => "C024", "Name" => array("a", "c"), "ListNo" = 13343);</code>
<code>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 ) );</code>
ListNo相同的值重新组织成一个数组,实现的效果:
<code>array("ShopID" => "C024", "Name" => array("a", "c"), "ListNo" = 13343);</code>
<code> $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);</code>
<code> 结果如下: array (size=3)</code>
0 =>
<code>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</code>
1 =>
<code>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</code>
2 =>
<code>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 </code>
遍历数组,遍历时把ListNo作为Key,然后判断下如果isset同样的Key就对Name做合并操作,没有就直接写入,到最后array_merge一下清除掉数组的Key