ホームページ >バックエンド開発 >PHPチュートリアル >複数の foreach ループからの結果の重複排除

複数の foreach ループからの結果の重複排除

WBOY
WBOYオリジナル
2016-06-20 12:30:262309ブラウズ

$a=array(0 =>array([logo] => Array
(
[id] =>1
[sid ] => 6
)
1=>array([ロゴ] => 配列
(
[id] =>2
[sid] => 6
)
)
foreach ループ $a を使用し、異なる SID のみを表示します。


ディスカッションに返信(解決策)

var_export() 実行後に配列をポストする

$last = 0;foreach($a as $r) {  foreach($r as $v) {    if($last != $v['sid']) echo $v['sid'];    $last = $v['sid'];  }}

array ( 0 => array ( 'logo' => array ( 'id ' => 1, 'sid' => 6, ), 1 => 配列 ( 'id' => 2, 'sid' => 6, ) ), )

$res = array();foreach($a as $v){	if(!isset($res[$v['logo']['sid']])) $res[$v['logo']['sid']] = $v;}print_r(array_values($res));

$last = 0;foreach($a as $r) {  foreach($r as $v) {    if($last != $v['sid']) echo $v['sid'];    $last = $v['sid'];  }}

ちょうどテストしました。それは、あなたが与えたコードにいくつかの欠陥があることを意味し、それを改善しました. :
$i = '';
foreach($a as $r=>$v){
foreach($v as $k=>$vv){
if( ! stristr($i,$vv['sid'])) {
$i .= $vv['sid'];
echo $vv['sid'];問題

$res = array();foreach($a as $v){	if(!isset($res[$v['logo']['sid']])) $res[$v['logo']['sid']] = $v;}print_r(array_values($res));

私の質問が明確ではなかったかもしれませんが、主に同じフィールドの重複した結果を削除することで解決できました。
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。