ホームページ > バックエンド開発 > PHPチュートリアル > PHPの二次元配列をあるkeyでグループ化して追加する_PHPチュートリアル

PHPの二次元配列をあるkeyでグループ化して追加する_PHPチュートリアル

WBOY
リリース: 2016-07-13 10:50:14
オリジナル
1233 人が閲覧しました

この記事では、PHP で特定のキー名を持つ 2 次元配列をグループ化および追加するサンプル プログラムを紹介します。このチュートリアルが役立つことを願っています。

タイトルのように、データベースからデータを取得する場合は、次のことができます

SELECT SUM(t_value),t_id FROM t_table GROUP BY t_id

ただし、PHP プログラムで同様の問題に対処する場合は、もう少し面倒になります。同様の問題に対処するための関数を次に示します。

コードは次のとおりですコードをコピー

/* 関数: 特定のキー名を持つ 2 次元配列をグループ化して追加し、新しい 2 次元配列を返します

* パラメータの説明: $arr-source 配列; $new_arr-new 追加後に取得される配列; $target_key-グループ化されるキー名

*/

関数 add_array($arr, &$new_arr, $target_key) {

$num = count($new_arr); // 新しい配列のサイズを計算します。最初の次元はここで計算されます。

for ($i = 0; $i < $num; $i++) {

// 新しい配列をループします

// if ブロックは主に、重複を避けるために、現在のグループのキー名が新しい配列にすでに存在するかどうかを判断します

// この関数はループ内で呼び出され、新しい配列には複数の要素が含まれる可能性があるため、新しい配列のすべての要素を比較する必要があります。

// 新しい配列の要素は 1 次元配列であり、$i は新しい 2 次元配列内のグループ化キー名を動的に比較します

if ($arr[$target_key] != $new_arr[$i][$target_key]) {//新しい配列のグループ化キー名が現在のソース配列のグループ化キー名と等しいかどうかを判断します

$cmp_num++; //等しくない場合、比較の数は 1 つ増加します

} else {//等しい場合、現在のグループ化キー名がすでに存在することを意味します

$tar_exist = true //存在フラグを true に設定します

$tar_key = $i //新しい配列内の現在のグループ化キー名の数値インデックスを返します

;

ブレーク // ループから抜け出す

}

}

//比較の数が新しい配列のサイズと同じ場合、現在のグループ化キー名が新しい配列にないことを意味し、存在フラグを false に設定します

if ($cmp_num == $num)

$tar_exist = false;

if ($tar_exist) {//グループ化キー名がすでに存在する場合、グループ化の配列要素を追加します

foreach ($arr as $key => $value) {

if ($key != $target_key) {//グループ化キー名に対応する要素の値が合計されません

$new_arr[$tar_key][$key]+=$value; // 残りの要素の値を追加します

}

}

} その他 {

//グループ化キー名が存在しない場合

// 新しいグループ化キー名を設定し、グループ化の配列要素を追加します

//新しい配列の最初の次元は、$num パラメータを使用して現在のグループ化の順序を決定します

// $num は実際には新しい配列内のキー名グループの数であり、0 から始まるため、新しい配列内の新しいグループのインデックスは直接 $num になります。

$new_arr[$num][$target_key] = $arr[$target_key];

foreach ($arr as $key => $value) {

if ($key != $target_key) {//グループ化キー名に対応する要素の値が合計されません

$new_arr[$num][$key]+=$value; //残りの要素は相加を実行します

}

}

}

}

$arr = 配列(

array('group_id' => 13, 'team_price' => 88.00, 'Satpay_price' => 85.00, 'team_id' => 348, 'origin' => 440, 'gain' => 14.45 、「数量」 => 5)、;

array('group_id' => 13, 'team_price' => 12.00, 'satopay_price' => 11.00, 'team_id' => 344, 'origin' => 36, 'gain' => 2.76 、「数量」 => 3)、

;

array('group_id' => 14, 'team_price' => 4.99, 'satopay_price' => 4.60, 'team_id' => 335, 'origin' => 4.99, 'gain' => 0.31915 、「数量」 => 1)、

;

array('group_id' => 14, 'team_price' => 12.00, 'Satpay_price' => 11.00, 'team_id' => 344, 'origin' => 24, 'gain' => 1.84 、「数量」 => 2)、

;

array('group_id' => 15, 'team_price' => 13.00, 'satopay_price' => 11.00, 'team_id' => 344, 'origin' => 24, 'gain' => 1.84 、「数量」 => 2)、

;

); 

$new_arr = array(); 

foreach ($arr as $key => $value) {

add_array($value, &$new_arr, 'group_id'); //这里我们按group_id进行分组相加

}

var_dump($new_arr);

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/632663.html技術記事この文章は、php の 2 つのグループを特定の名前で実行するコンポーネントの追加例プログラムに関する各位の学会に書かれています。
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート