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

WBOY
リリース: 2016-06-20 12:30:26
オリジナル
2261 人が閲覧しました

$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));
ログイン後にコピー
ログイン後にコピー

私の質問が明確ではなかったかもしれませんが、主に同じフィールドの重複した結果を削除することで解決できました。
関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!