-1

配列を親配列の値とマージする必要があります。

$testArr=unserialize('a:6:{s:5:"queue";a:2:{i:6;s:1:"5";i:5;s:1:"2";}s:3:"sum";a:2:{i:6;s:3:"765";i:5;s:3:"2.1";}s:7:"sumAccD";a:2:{i:6;s:3:"543";i:5;s:3:"3.1";}s:7:"sumAccC";a:2:{i:6;s:2:"54";i:5;s:3:"3.3";}s:7:"comment";a:2:{i:6;s:12:"test comment";i:5;s:6:"111222";}s:3:"yt0";s:0:"";}');

$ret = array();
foreach ($testArr as $pkey => $pval) {
if (is_array($pval)) {
    foreach ($pval as $pvkey => $pvval) {
        $ret[$pvkey] = array($pkey => $pvval);
    }
}
}
echo '<pre>', print_r($ret), '</pre>';

この場合、印刷されます

Array
(
[6] => Array
    (
        [comment] => test comment
    )

[5] => Array
    (
        [comment] => 111222
    )

)
1

残念ながら、コメントのみを出力します。他の行を追加する必要があります: queue,sum,sumAccD,sumAccC. 配列は次のようになります。

Array
(
[6] => Array
    (
        [queue] => 5
        [sum] => ''
        ....
        [comment] => test comment
    )

[5] => Array
    (
        [queue] => 2
        [sum] => 2.1
        ....
        [comment] => 111222
    )

)
1

それらをマージするのを手伝ってください。ありがとう。

4

2 に答える 2

0

交換することで解決する問題

$ret[$pvkey] = array($pkey => $pvval);

$ret[$pvkey][$pkey] = $pvval;
于 2013-01-13T07:53:15.087 に答える
0

この行を見てください:

$ret[$pvkey] = array($pkey => $pvval);

毎回新しい配列にキーを割り当て、以前にあったものを上書きしています。あなたの場合、「コメント」は処理される最後のキーであるため、最終的な配列の唯一のキーになります。

これの代わりに、次のように、内側の for の外側で 1 回だけ新しい配列を定義できます。

$ret[$pvkey] = array();

そして、通常どおり、内側の for ループでその配列に値を代入します (そのため、そこに配列を作成する必要はありません!)

于 2013-01-12T19:17:03.090 に答える