PHPコードの一部に対する解決策を探しています

WBOY
リリース: 2016-06-13 12:09:03
オリジナル
837 人が閲覧しました

php コードを探しています
複数のデータを 1 つにマージする必要があります。
$data = array();
$data[] = array("id" => "123", "name" => "money", "before_save" => "10", "after_save" => "20", "create_date" => "2014-10-23");
$data[] = array("id" => "123", "name" => ; "お金", "保存前" => "30", "作成日" => "2014-10-24");
$data[] = array( "id" => "name" => "money"、"before_save" => "50"、"create_date" => "2014-10" -25");

$data[] = array("id" => "123", "name" => "期間", "before_save" => "10", "after_save" " => "20", "create_date" => "2014-10-23");
$data[] = array("id" => "123", "name" => "期間", "before_save" => "20", "after_save" => "30", "create_date" => "2014-10-24");


$data[ ] = array("id" => "456", "name" => "money", "before_save" => "60", "after_save" => "70", "create_date" => "2014-10-26");
$data[] = array("id" => "456", "name" => "money", "before_save" => "70", " after_save" => "80", "create_date" => "2014-10-27");
$data[] = array("id" => "456", "name" =>; "money", "before_save" => "80", "after_save" => "2014-10-28");

$data[] = array("id" => "456", "name" => "duration", "before_save" => "60", "after_save" => "70", "create_date" => "2014 -10-26");
$data[] = array("id" => "456", "name" => "期間", "before_save" => "70", "after_save" => "80", "create_date" => "2014-10-27");
$data[] = array("id" => "456", "name" => "期間", "before_save" => "80", "after_save" => "100", "create_date" => "2014-10-28");

上記の ID と名前を次のように変更します同じものを 1 つのデータに結合します。
マージ ルールは次のとおりです:
before_save の値は、create_date が最も小さいものの before_save 値です
after_save の値は、create_date が最も大きいものの after_save 値です
の値create_date は最大値です

たとえば、最初の 3 つのデータの結果は
$data[] = array("id" =>"123", "name" =) である必要があります。 > "お金", "保存前" => "保存後" => "2014-10-25");


上記の結果は、
$returndata[0] = array("id" => "123", "name" =>"money", "before_save" =) の合計 4 つのデータを生成します。 > "10", "保存後" => "50", "作成日" => "2014-10-25");
$returndata[1] = array("id" => ", "name" => "期間", "before_save" => "10", "after_save" => "30", "create_date" => "2014-10-24");
$returndata[2] = array("id" => "456", "name" => "money", "before_save" => "60", "after_save" => "100", "create_date " => "2014-10-28");
$returndata [3] = array("id" => "456", "name" => "duration", "before_save" =>; "60", "after_save" => "100", "create_date" = > "2014-10-28");


私は最近 PHP を学んだばかりで、あまり詳しくありません。助けを求めてください
-----解決策のアイデア---------------------

この投稿は xuzuning によって最終編集されました: 2014-11-02 18:55:54
$res = array();<br />foreach($data as  $t) $res[$t['id']][$t['name']][$t['create_date']] = $t;<br /><br />$returndata = array();<br />foreach($res as $t) {<br />  foreach($t as $r) {<br />    ksort($r);<br />    $v = array_pop($r);<br />    $p = array_shift($r);<br />    $v['before_save'] = $p['before_save'];<br />    $returndata[] = $v;<br />  }<br />}<br />print_r($returndata);
ログイン後にコピー
関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート