ホームページ >バックエンド開発 >PHPチュートリアル >PHPで2次元配列を書いて同じ値を見つけて結合する方法を教えてください。

PHPで2次元配列を書いて同じ値を見つけて結合する方法を教えてください。

WBOY
WBOYオリジナル
2016-06-13 12:10:331234ブラウズ

同じ値を見つけて結合するためにPHPで2次元配列を記述する方法を教えてください。
これは配列です。
メイン関数は Thinkphp ビュー モデルのクエリ結果です。

各配列で同じタイトル値をクエリしてから、配列をマージします。 array_merge()
を使用するようです。同じタイトルを見つけるにはどうすればよいですか? foreach traverse には配列のインデックス値を返すことができますか? key() 関数にこの機能があるようです。
マージ時に返せるように、同じタイトルの配列要素の位置を指定します。
array_merge(array[0],array[1])

同じタイトルで、画像の接続フィールドをマージします。Pictureurl はこれとは異なります。簡単に言うと、複数の画像をアップロードして記事を投稿するようなものです。検索すると、配列のサイズが数倍になります。効率的な計算に使用してください。アドバイスをお願いします~
この方法


array(2) {<br />  [0] => array(5) {<br />    ["picTitle"] => string(33) "标题1"<br />    ["picCategroy"] => string(6) "分类"<br />    ["picAuthor"] => string(12) "作者"<br />    ["picPostTime"] => string(19) "2014-11-20 16:05:16"<br />    ["pictureurl"] => string(55) "attachment/picture/uploadify/20141120/546da0784831c.png"<br />  }<br />  [1] => array(5) {<br />    ["picTitle"] => string(33) "标题1"<br />    ["picCategroy"] => string(6) "分类"<br />    ["picAuthor"] => string(12) "作者"<br />    ["picPostTime"] => string(19) "2014-11-20 16:05:16"<br />    ["pictureurl"] => string(55) "attachment/picture/uploadify/20141120/546da0746edb8.png"<br />  }<br />}
-----解決策のアイデア------------- --------

$ar = array(<br />  array(<br />    "picTitle" => "标题1",<br />    "picCategroy" => "分类",<br />    "picAuthor" => "作者",<br />    "picPostTime" => "2014-11-20 16:05:16",<br />    "pictureurl" => "attachment/picture/uploadify/20141120/546da0784831c.png",<br />  ),<br />  array(<br />    "picTitle" => "标题1",<br />    "picCategroy" => "分类",<br />    "picAuthor" => "作者",<br />    "picPostTime" => "2014-11-20 16:05:16",<br />    "pictureurl" => "attachment/picture/uploadify/20141120/546da0746edb8.png",<br />  ),<br />);<br />foreach(call_user_func_array('array_merge_recursive', $ar) as $key=>$item) {<br />  $res[$key] = join(',', array_unique($item));<br />}<br />var_export($res);<br />
array (<br />  'picTitle' => '标题1',<br />  'picCategroy' => '分类',<br />  'picAuthor' => '作者',<br />  'picPostTime' => '2014-11-20 16:05:16',<br />  'pictureurl' => 'attachment/picture/uploadify/20141120/546da0784831c.png,attachment/picture/uploadify/20141120/546da0746edb8.png',<br />)<br />
- -----ソリューションのアイデア------ -------
何気なく書いただけで、まだテストしていません。大文字のアイデアです
$ar = array(
array(
"picTitle" => "タイトル 1",
"picCategroy" => "著者",
"picPostTime" 2014-11-20 16:05:16",
"pictureurl" => "attachment/picture/uploadify/20141120/546da0784831c.png",
),
array(
"picTitle " => "タイトル 1",
"picCategroy" => "カテゴリ",
"picAuthor" => "著者",
"picPostTime" => "2014-11-20 16:05:16",
"pictureurl" => "attachment/picture/uploadify/20141120/546da0746edb8.png",
),
);

//Title= >配列インデックス array
$map_arr=array();
foreach($ar as $key=>$ite​​m)
{
//title=>配列内にあるかどうかを判定Index array
if(isset($map_arr[$item['picTitle']]))
{
//そうであれば、マージ
$ar[$key]=array_merge($ar[ $key],$map_arr[$item['picTitle']]);
}
else
{
//そうでない場合は保存 マッピングインデックスを入力
$map_arr[$item ['picTitle']]=$item;
unset($ar[$key]) //配列にもともと存在していた値を削除します
}
}


------解決策のアイデア-----------


<br />$arr = array(<br />  array(<br />    "picTitle" => "标题1",<br />    "picCategroy" => "分类",<br />    "picAuthor" => "作者",<br />    "picPostTime" => "2014-11-20 16:05:16",<br />    "pictureurl" => "attachment/picture/uploadify/20141120/546da0784831c.png",<br />  ),<br />  array(<br />    "picTitle" => "标题1",<br />    "picCategroy" => "分类",<br />    "picAuthor" => "作者",<br />    "picPostTime" => "2014-11-20 16:05:16",<br />    "pictureurl" => "attachment/picture/uploadify/20141120/546da0746edb8.png",<br />  )<br />);<br />$item=array();<br />foreach($arr as $key=>$value){<br />    foreach($value as $k=>$v){<br />        if(!isset($item[$k])){<br />            $item[$k]=$v;<br />        }<br />    }<br />}<br />print_r($item);<br />

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