私はまっすぐ進む作業になると予想していたものを解決するのにあまりにも多くの時間をかけた後、明白な欠陥を見逃しているか、 。新しい値を持つ繰り返しオブジェクトのPHP配列の再構築
私の実際のデータははるかに複雑ですが、私はこの例に簡略化しました。
のは、私は、配列オブジェクトの$my_array
を持っているとしましょう:
$object1 = new stdClass();
$object1->valueA = 'abc';
$object1->valueB = 'def';
$object1->valueC = '20160410';
$object2 = new stdClass();
$object2->valueA = '123';
$object2->valueB = '456';
$object2->valueC = '20160408';
$object3 = new stdClass();
$object3->valueA = 'foo';
$object3->valueB = 'bar';
$object3->valueC = '20160412';
$my_array = array(
'X' => $object1,
'Y' => $object2,
'Z' => $object3
);
私は、各オブジェクトを介して行きたい、新しいプロパティを計算し、その値のいずれかを使用し、使用して、新しい配列にオブジェクトを割り当てますそれをグループ化する新しい計算値。
私はこのようにそれをやった:
$new_array= array();
foreach($my_array as $key=>$obj){
for($i=0;$i<=2;$i++){ //the real use case uses a slightly different loop, this is simpler/shorter for an example
$date = $obj->valueC + $i; //use valueC and the loop to calculate a new value
$obj->date = $date; //add my new value to the object
$new_array[$date][$key] = $obj; //construct new array of arrays of objects. bits on bits on bytes.
}
}
私はコンソールへの結果の配列を記録している場合、それは次のようになります。今
[04-Apr-2016 22:09:28 UTC] Array
(
[20160410] => Array
(
[X] => stdClass Object
(
[valueA] => abc
[valueB] => def
[valueC] => 20160410
[date] => 20160412
)
[Y] => stdClass Object
(
[valueA] => 123
[valueB] => 456
[valueC] => 20160408
[date] => 20160410
)
)
[20160411] => Array
(
[X] => stdClass Object
(
[valueA] => abc
[valueB] => def
[valueC] => 20160410
[date] => 20160412
)
)
[20160412] => Array
(
[X] => stdClass Object
(
[valueA] => abc
[valueB] => def
[valueC] => 20160410
[date] => 20160412
)
[Z] => stdClass Object
(
[valueA] => foo
[valueB] => bar
[valueC] => 20160412
[date] => 20160414
)
)
[20160408] => Array
(
[Y] => stdClass Object
(
[valueA] => 123
[valueB] => 456
[valueC] => 20160408
[date] => 20160410
)
)
[20160409] => Array
(
[Y] => stdClass Object
(
[valueA] => 123
[valueB] => 456
[valueC] => 20160408
[date] => 20160410
)
)
[20160413] => Array
(
[Z] => stdClass Object
(
[valueA] => foo
[valueB] => bar
[valueC] => 20160412
[date] => 20160414
)
)
[20160414] => Array
(
[Z] => stdClass Object
(
[valueA] => foo
[valueB] => bar
[valueC] => 20160412
[date] => 20160414
)
)
)
、私は$のnew_array [ '20160410']を期待['X'] - >日付は20160410
になります。結局、2行の中で、私は "この値をトップレベルの配列キーとして使用し、オブジェクトの値としても使う"と言った。しかし、私が何をしても、['X']
のすべてのインスタンスは同じdate
の値を持ちます。 ['Y']
および['Z']
と同じです。
私の目的は、新たに計算されたdate
値をオブジェクト内に格納し、その値をグループ化キーとして使用できるようにすることです。
すべての値が配列のオブジェクトごとに同じであることに注意して始めました。次のステップは、コードで使用するすべてのマニュアルをマニュアルで確認することでした。 – Rizier123
これは、データがリレーショナルデータベースにあった場合には些細なことです。 – symcbean