ホームページ >バックエンド開発 >PHPチュートリアル >2 次元配列から 1 次元配列から同じ ID を持つ複数の新しい 2 次元配列を抽出する PHP アルゴリズムについて質問します。

2 次元配列から 1 次元配列から同じ ID を持つ複数の新しい 2 次元配列を抽出する PHP アルゴリズムについて質問します。

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

PHP の 2 次元配列アルゴリズム

PHP を学んだばかりですが、問題が発生しました。助けてください。ありがとうございます。

2 次元配列は次のとおりです。
$arr = array(
array('id'=>100,'value'=>100),
array('id'=>100,'value '=> 130,
配列('id'=>100,'value'=>140),
配列('id'=>100,'value'=>150),
配列(' id'=>101,'value'=>1600),
array('id'=>101,'value'=>100),
array('id'=>102,'value' =>100 ),
array('id'=>102,'value'=>100),
array('id'=>102,'value'=>100),
array(' id'=>103,'value'=>100),
array('id'=>103,'value'=>100),
array('id'=>104,'value' =>100 ),
array('id'=>104,'value'=>100),
array('id'=>104,'value'=>100),
array(' id'=>105,'value'=>100)
);


次の 5 つの 2 次元配列に分割する方法:
arr1(
array('id'=>100,'value' =>100) ,
array('id'=>100,'value'=>130,
array('id'=>100,'value'=>140),
array('id '=>100 ,'値'=>150)
);

arr2(
array('id'=>101,'value'=>1600),
array('id'=> 101,'値' =>100)
);

arr3(
array('id'=>102,'value'=>100),
array('id'=>102,'value '=>100 ),
array('id'=>102,'value'=>100)
);

arr4(
array('id'=>103,'value'=> 100),
array ('id'=>103,'value'=>100)

);

arr5(
array('id'=>104,'value'=>100),
array('id'=>104,'value'=>100),
array('id'=>104,'value'=>100),
array('id'=>105) ,'value'=
id'=>104,'value'=>100),
array('id'=>104,'value'=>100),
array('id'=> ;104,'値' =>100),
);
arr6(
array('id'=>105,'値'=>100)

?? 6 つの配列ですか、それとも 5 つの配列ですか? 2 つの arr5 のデータはまだ異なっていますか?


本当にわかりません~~~ルールを教えてもらえますか?以下に挙げた 6 つの配列のパターンは見つかりませんでした。 。 。 。特に 2 つの arr5 に含まれる内容は、人々を直接混乱させます。 。 。

6、最後の arr5 は次のようになります: arr6

arr6(
array('id'=>105,'value'=>100)
); 申し訳ありませんが、コピー エラーです。

つまり、ID が同じ場合は 2 次元配列に入れる必要があります。
上記の配列には 100、101、102、103、104、105 の 6 種類の ID があります。それぞれ6つの異なる2次元配列。



$arr = array(			array('id'=>100,'value'=>100),			array('id'=>100,'value'=>130),			array('id'=>100,'value'=>140),			array('id'=>100,'value'=>150),			array('id'=>101,'value'=>1600),			array('id'=>101,'value'=>100),			array('id'=>102,'value'=>100),			array('id'=>102,'value'=>100),			array('id'=>102,'value'=>100),			array('id'=>103,'value'=>100),			array('id'=>103,'value'=>100),			array('id'=>104,'value'=>100),			array('id'=>104,'value'=>100),			array('id'=>104,'value'=>100),			array('id'=>105,'value'=>100)		);		foreach($arr as $key=>$val){			$newarr[$val['id']][]=array('id'=>$val['id'],'value'=>$val['value']);		}		$arr1=$newarr['100'];		$arr2=$newarr['101'];		$arr3=$newarr['102'];		$arr4=$newarr['103'];		$arr5=$newarr['104'];		$arr6=$newarr['105'];

$arr = array(  array('id'=>100,'value'=>100),  array('id'=>100,'value'=>130),  array('id'=>100,'value'=>140),  array('id'=>100,'value'=>150),  array('id'=>101,'value'=>1600),  array('id'=>101,'value'=>100),  array('id'=>102,'value'=>100),  array('id'=>102,'value'=>100),  array('id'=>102,'value'=>100),  array('id'=>103,'value'=>100),  array('id'=>103,'value'=>100),  array('id'=>104,'value'=>100),  array('id'=>104,'value'=>100),  array('id'=>104,'value'=>100),  array('id'=>105,'value'=>100));foreach($arr as $v) $res[$v['id']][] = $v;//print_r($res);//你可以直接使用这个数组//也可以导入变量表后访问extract(array_values($res), EXTR_PREFIX_ALL, 'arr');//如print_r($arr_3);


ahui_lcm さんと xuzuning さん、本当にありがとうございます。こんな簡単な変換は思いつきませんでした。本当に恥ずかしいです。
二人と他のヒーローに質問させてください。PHP 配列の操作をすぐに改善するにはどうすればよいでしょうか?他の言語の配列の影響を常に受け​​ます。
ありがとう!私を最初に助けてくれた ahui_lcm さんにまだポイントをあげなければなりません。 xuzuning 兄弟の答えは比較的完璧であり、xuzuning に非常に感謝しています。

りー

りー

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