配列操作タスクで立ち往生しています。
シナリオ:
オブジェクトの配列があります。サンプル:
Array(
[0] => stdClass Object(
['foo'] => 'foo1',
['bar'] => 'bar1',
['baz'] => 'baz1'
),
[1] => stdClass Object(
['foo'] => 'foo2',
['bar'] => 'bar2',
['baz'] => 'baz2'
),
[2] => stdClass Object(
['foo'] => 'foo3',
['bar'] => 'bar3',
['baz'] => 'baz3'
)
)
私はそれを次の形式に変換する必要があります:
Array(
['foo1'] => Array('bar1', 'baz1'),
['foo2'] => Array('bar2', 'baz2'),
['foo3'] => Array('bar3', 'baz3'),
)
これを実現するために私が作成する関数は次のとおりです。
function createAttributeString($attributes)
{
$finalString = '';
$string = array();
$column = array();
foreach( $attributes as $attrib )
{
if( $attrib->primary_key == '1' )
$column[$attrib->name] = array("'$attrib->type'", "'$attrib->max_length'", '\'pk\'');
else
$column[$attrib->name] = array("'$attrib->type'", "'$attrib->max_length'");
$string[$attrib->name] = 'array('.implode(',', $column[$attrib->name]).')';
}
$finalString = 'array('.implode(',', $string).')';
return $finalString;
}
ただし、この関数の出力は次のとおりです。
Array(
[0] => Array('bar1', 'baz1'),
[1] => Array('bar2', 'baz2')
[2] => Array('bar3', 'baz3')
)
これは、$ finalStringで使用した最後のimplode関数が原因であることはわかっていますが、目的の出力を取得するために代わりに何を使用すればよいかわかりません。
どんな助けや提案も大歓迎です。
更新:
最終的な配列は文字列形式で返される必要があります。