0

次のような行を含む大きな配列があります。

Array
(
    [0] => Array
        (
            [attribute] => gender
            [value] => male
        )

    [1] => Array
        (
            [attribute] => first_name
            [value] => test
        )

)

それを連想配列に変換したい:

Array
(
    [gender] => male
    [first_name] => test
)

これを実行できる組み込みのPHP関数はありますか、それともForeachループを使用して実行する必要がありますか?

4

2 に答える 2

2

foreachループを使用する必要があります。これを行うための「組み込み」の方法はありません。

foreach ($arr as $entry)
{
    $assoc[$entry["attribute"]] = $entry["value"];
}
于 2012-12-10T23:34:29.183 に答える
2

間違った問題を解決しているように感じるので、あなたが本当にすべきことはアプローチをリファクタリングしているように私には聞こえます。そもそもアレイを再構築したいのに、なぜこのようにアレイが作成されたのですか?制御できない外部ソースからJSONオブジェクトとしてデータをPHPに取得しているということですか?それとも、PHPで配列を適切に構築しておらず、その方法で作業するのが面倒であることに気付いたため、別の方法で配列を再構築したいのでしょうか。

前者の場合は、次の手順を実行する必要があります(必要な新しい構造で完全に新しい配列を作成します)。

$new_array = array();
foreach ($array as $element) {
    $new_array[$element['attribute']] = $element['value'];
}

後者の場合は、最初にこの方法でアレイを構築したいので、最初に新しいアレイを作成する必要がなくなります。

また、実際のユースケースを説明すると、さらに優れた解決策がある可能性があります。これを行う必要がまったくなく、既存の構造を使用して必要なことを実行できるときに時間を無駄にしている可能性があります。

于 2012-12-10T23:44:04.447 に答える