0

私は最初の質問であまり明確ではなかったので、それを削除しました。私はそれらの配列を持っています:

    $open = array(array("FAI1","34"),array("FAI2","34"),array("FAI3","34"));
    $click = array(array("FAI2","52"),array("FAI1","68"),array("FAI3","99"));
    $unsubscribe = array(array("FAI2","103"),array("FAI3","67"),array("FAI1","102"));
    $def_sent = array(array("FAI1","34",24),array("FAI2","34",23),array("FAI3","34",27));
    $SB = array(array("FAI2","103"),array("FAI3","67"),array("FAI1","102"));
    $HB = array(array("FAI2","103"),array("FAI3","67"),array("FAI1","102"));

それらをマージして次のような結果を得る関数を検索しました。

     $result = array(array("FAI1",34,68,102,34,24,102,102) 
     ,array("FAI2","34",23.....),
     array("FAI3","34",27....));

これを行うには、phpオンラインドキュメントで関数を使用しました。これは関数です

function array_merge_recursive() {

    $arrays = func_get_args();
    $base = array_shift($arrays);

    foreach ($arrays as $array) {
        reset($base); 
        while (list($key, $value) = @each($array)) {
            if (is_array($value) && @is_array($base[$key])) {
                $base[$key] = array_merge_recursive($base[$key], $value);
            } else {
                $base[$key] = $value;
            }
        }
    }

    return $base;
}

しかし、上記の結果を得る代わりに、私はこれを得ました:

FAI1|34
FAI2|34
FAI3|34
FAI2|52
FAI1|68
FAI3|99
...

したがって、期待される結果を得るには、この関数を再定式化するための助けが必要です。

4

1 に答える 1

1

この機能を試してください:

function array_merge_rec() {
    $arrays = func_get_args();
    $result = array();
    foreach ($arrays as $arg) {
        if (is_array($arg)) {
            foreach ($arg as $item) {
                if (!isset($result[$item[0]])) {
                    $result[$item[0]] = $item;
                } else {
                    $result[$item[0]][] = $item[1];
                }
            }
        } else {
            echo "$arg skippend because it isn't array\n";
        }
   }

   return array_values($result);

}

それは役に立ちますか?

于 2013-10-30T22:05:39.623 に答える