ホームページ  >  記事  >  バックエンド開発  >  PHPは、2次元配列内の等しい値の合計数をカウントし、それらを新しい配列に結合します。

PHPは、2次元配列内の等しい値の合計数をカウントし、それらを新しい配列に結合します。

WBOY
WBOYオリジナル
2016-06-23 14:22:271250ブラウズ

php 多次元配列


たとえば、この配列内の m_id に等しい配列要素を新しい配列に結合したいとします。 レンダリングは次のようになります:



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

Give an例 誤解が生じるので正当化してください

元のデータには項目がありません:
'sv_id' => 5, 'mid' => 0
'sv_id' => 9, 'mid' => ; 3
結果はどうでしたか?

例を示すときは、誤解が生じる可能性があるため、自明にしてください。
'sv_id' => 5, 'mid' => 0
'sv_id' => 'mid' は含まれません。 ' => 項 3
は結果にどのように現れますか?

確かにそうですが、データは自由に変更できます。2 つの図の配列構造をよく見てください。 。 。

この構造は関係ないですよね?

アルゴリズムの観点から: 元のデータにないアイテムを生成する方法


<?php $arr=array(		array(				'sv_id'=>1,				'm_id'=>1,				'sv_question1'=>20				),			array(				'sv_id'=>2,				'm_id'=>2,				'sv_question1'=>10		),		array(				'sv_id'=>3,				'm_id'=>1,				'sv_question1'=>20		),		array(				'sv_id'=>4,				'm_id'=>3,				'sv_question1'=>20		),		array(				'sv_id'=>5,				'm_id'=>2,				'sv_question1'=>10		)	);//var_dump($arr);$ar=array();foreach($arr as $v){		if(empty($ar) || !in_array($v,$ar)){			$ar[$v['m_id']][$v['sv_id']]=$v;		}else{			foreach($ar as $ka=>$va){				if($ka==$v['m_id']){					$ar[$ka][$v['sv_id']]=$v;				}			}		}}echo "<pre class="brush:php;toolbar:false">";var_dump($ar);

コピーして実行して、必要な効果があるかどうかを確認できます。

レンダリング:





あなたの余分なプロジェクトは考慮していません (私はそれらを作ることができません)

$ar = array(  array( 'sv_id' => 1, 'mid' => 1, 'sv_question1' => 20 ),  array( 'sv_id' => 2, 'mid' => 2, 'sv_question1' => 10 ),  array( 'sv_id' => 3, 'mid' => 1, 'sv_question1' => 20 ),  array( 'sv_id' => 4, 'mid' => 3, 'sv_question1' => 20 ),  array( 'sv_id' => 5, 'mid' => 2, 'sv_question1' => 20 ),);$res = array();foreach($ar as $item) {  $res[$item['mid']][$item['sv_id']] = $item;}print_r($res);
Array(    [1] => Array        (            [1] => Array                (                    [sv_id] => 1                    [mid] => 1                    [sv_question1] => 20                )            [3] => Array                (                    [sv_id] => 3                    [mid] => 1                    [sv_question1] => 20                )        )    [2] => Array        (            [2] => Array                (                    [sv_id] => 2                    [mid] => 2                    [sv_question1] => 10                )            [5] => Array                (                    [sv_id] => 5                    [mid] => 2                    [sv_question1] => 20                )        )    [3] => Array        (            [4] => Array                (                    [sv_id] => 4                    [mid] => 3                    [sv_question1] => 20                )        ))

うわー、#5 モデレーター、、、なぜあなたが書いた方法を思いつかないのですか。 。あなたのものはとても簡潔です。

<?php $arr=array(		array(				'sv_id'=>1,				'm_id'=>1,				'sv_question1'=>20				),			array(				'sv_id'=>2,				'm_id'=>2,				'sv_question1'=>10		),		array(				'sv_id'=>3,				'm_id'=>1,				'sv_question1'=>20		),		array(				'sv_id'=>4,				'm_id'=>3,				'sv_question1'=>20		),		array(				'sv_id'=>5,				'm_id'=>2,				'sv_question1'=>10		)	);//var_dump($arr);$ar=array();foreach($arr as $v){		if(empty($ar) || !in_array($v,$ar)){			$ar[$v['m_id']][$v['sv_id']]=$v;		}else{			foreach($ar as $ka=>$va){				if($ka==$v['m_id']){					$ar[$ka][$v['sv_id']]=$v;				}			}		}}echo "<pre class="brush:php;toolbar:false">";var_dump($ar);

コピーして実行して、希望する効果があるかどうかを確認してください。

レンダリング:



そうですね、この方法は機能します、ありがとう。しかし、下のマスターはさらに恐ろしく、単純すぎます。 ! !

あなたの余分なプロジェクトに関係なく (私はそれらを作ることはできません)

$ar = array(  array( 'sv_id' => 1, 'mid' => 1, 'sv_question1' => 20 ),  array( 'sv_id' => 2, 'mid' => 2, 'sv_question1' => 10 ),  array( 'sv_id' => 3, 'mid' => 1, 'sv_question1' => 20 ),  array( 'sv_id' => 4, 'mid' => 3, 'sv_question1' => 20 ),  array( 'sv_id' => 5, 'mid' => 2, 'sv_question1' => 20 ),);$res = array();foreach($ar as $item) {  $res[$item['mid']][$item['sv_id']] = $item;}print_r($res);
Array(    [1] => Array        (            [1] => Array                (                    [sv_id] => 1                    [mid] => 1                    [sv_question1] => 20                )            [3] => Array                (                    [sv_id] => 3                    [mid] => 1                    [sv_question1] => 20                )        )    [2] => Array        (            [2] => Array                (                    [sv_id] => 2                    [mid] => 2                    [sv_question1] => 10                )            [5] => Array                (                    [sv_id] => 5                    [mid] => 2                    [sv_question1] => 20                )        )    [3] => Array        (            [4] => Array                (                    [sv_id] => 4                    [mid] => 3                    [sv_question1] => 20                )        ))


素晴らしいですね! ! !礼拝して感謝します! !

この構造は関係ないですよね?

アルゴリズムの観点から: 元のデータにない項目を生成する方法


はい、ごめんなさい、間違えました。アンダースコアが 1 つありません。m_id はmid と書かれています

<?php $arr=array(		array(				'sv_id'=>1,				'm_id'=>1,				'sv_question1'=>20				),			array(				'sv_id'=>2,				'm_id'=>2,				'sv_question1'=>10		),		array(				'sv_id'=>3,				'm_id'=>1,				'sv_question1'=>20		),		array(				'sv_id'=>4,				'm_id'=>3,				'sv_question1'=>20		),		array(				'sv_id'=>5,				'm_id'=>2,				'sv_question1'=>10		)	);//var_dump($arr);$ar=array();foreach($arr as $v){		if(empty($ar) || !in_array($v,$ar)){			$ar[$v['m_id']][$v['sv_id']]=$v;		}else{			foreach($ar as $ka=>$va){				if($ka==$v['m_id']){					$ar[$ka][$v['sv_id']]=$v;				}			}		}}echo "<pre class="brush:php;toolbar:false">";var_dump($ar);

コピーして実行して、目的の効果があるかどうかを確認します。
レンダリング:



そうですね、この方法は機能します、ありがとう。しかし、下のマスターはさらに恐ろしく、単純すぎます。 ! !

<?php $arr=array(		array(				'sv_id'=>1,				'm_id'=>1,				'sv_question1'=>20				),			array(				'sv_id'=>2,				'm_id'=>2,				'sv_question1'=>10		),		array(				'sv_id'=>3,				'm_id'=>1,				'sv_question1'=>20		),		array(				'sv_id'=>4,				'm_id'=>3,				'sv_question1'=>20		),		array(				'sv_id'=>5,				'm_id'=>2,				'sv_question1'=>10		)	);//var_dump($arr);$ar=array();foreach($arr as $v){		if(empty($ar) || !in_array($v,$ar)){			$ar[$v['m_id']][$v['sv_id']]=$v;		}else{			foreach($ar as $ka=>$va){				if($ka==$v['m_id']){					$ar[$ka][$v['sv_id']]=$v;				}			}		}}echo "<pre class="brush:php;toolbar:false">";var_dump($ar);

コピーして実行して、必要な効果があるかどうかを確認できます。
レンダリング:



そうですね、この方法は機能します、ありがとう。しかし、下のマスターはさらに恐ろしく、単純すぎます。 ! !

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。