0

次の配列がある場合:

array(
   'var1' => 123,
   'var2' => 234,
   'var3' => 345
);

これの特定の部分を抽出して、新しい配列、つまり var1 と var3 を作成したいと思います。

私が探している結果は次のとおりです。

array(
   'var1' => 123,
   'var3' => 345
);

投稿された例は非常に簡素化されています。実際には、配列にははるかに多くのキーがあり、より多くのキーを抽出しようとしていますが、一部のキーが存在する場合と存在しない場合があります。

これを行う組み込みのphp関数はありますか?

編集:

抽出されるキーは、クラスの配列としてハードコーディングされます。つまり、$this->keysToExtract

4

2 に答える 2

4
$result = array_intersect_key($yourarray,array_flip(array('var1','var3')));

だから、あなたの編集で:

$result = array_intersect_key($yourarray,array_flip($this->keysToExtract));
于 2013-07-10T22:11:15.987 に答える
0

これを行うために組み込み関数は必要ありません。これを試してください:

$this->keysToExtract = array('var1', 'var3'); // The keys you wish to transfer to the new array

// For each record in your initial array
foreach ($firstArray as $key => $value)
{
    // If the key (ex : 'var1') is part of the desired keys
    if (in_array($key, $this->keysToExtract)
    {
        $finalArray[$key] = $value; // Add to the new array
    }
}

var_dump($finalArray);

これがおそらく最も効率的な方法であることに注意してください。

于 2013-07-10T22:10:50.393 に答える