-1

私はこのような配列構造を持っています

Array
(
    [0] => stdClass Object
        (
            [foo] => 9992
            [bar] => 1508
        )

    [1] => stdClass Object
        (
            [foo] => 10115
            [bar] => 1598
        )

    [2] => stdClass Object
        (
            [foo] => 10263
            [bar] => 1690
        )

    [3] => stdClass Object
        (
            [foo] => 10363
            [bar] => 1794
        )

    [4] => stdClass Object
        (
            [foo] => 10486
            [bar] => 1904
        )
)

ここで、この構造を次のように変換したいと思います。

Array
(
    [0] => stdClass Object
        (
            [name] => 'foo'
            [data] => Array (
            9992, 10115, 10263, 10363, 10486
            )
        )
    [1] => stdClass Object
        (
            [name] => 'bar'
            [data] => Array(
               1508, 1598, 1690, 1794, 1904
            )
        )
)

このコードを試しましたが、期待される構造が得られませんでした

$return = array();
    $i = 0;
    foreach($object as &$row) {
        foreach( $row as $key => $val ) {
            $return[$i]['name'] = $key;
                    // This is my custom function that does the same 
                    // thing for objects as array_search does for arrays
            $search = object_search($key, $row); 
            if( $search ) {
                $return[$search]['data'][] = $val;
            } else {
                $return[$i]['data'][] = $val;
            }
        }
        $i++;
    }
    return $return;
4

2 に答える 2

1
$c1 = new stdClass();
$c1->foo = 123;
$c1->bar = 345;

$c2 = new stdClass();
$c2->foo = 444;
$c2->bar = 555;

$arr = array();
$arr[] = $c1;
$arr[] = $c2;


$tfoo = array();
$tbar = array();
foreach($arr as $a) {
    $tfoo[] = $a->foo;
    $tbar[] = $a->bar;
}

$foo = array_unique($tfoo);
$bar = array_unique($tbar);

$result = array();
$result[0] = new stdClass();
$result[0]->name = "foo";
$result[0]->data = $foo;

$result[1] = new stdClass();
$result[1]->name = "bar";
$result[1]->data = $bar;


print_r($result);
于 2013-10-29T12:09:36.117 に答える