- ベストアンサー
連想配列でキーを利用して一部分を引き抜きたい
PHP5.2.4を使用しています。 配列で一部分を引き抜く関数は次のようなarray_spliceで、 $arr = array('a' => 1, 'b' => 2, 'c' => 3); $arr2 = array_splice($arr, 1/*←ここに'b'と書きたい*/, 1); print_r($arr2);//←Array ( [b] => 2 ) print_r($arr);//Array ( [a] => 1 [c] => 3 ) これは第2引数に添え字の番号(上の例だと1)を指定しなければいけないのですが、 そうではなくて、キー('a'や'b'など)を指定して引き抜きたいです。 そのような関数などはあるのでしょうか?
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
もっと効率的なものはある気がしますがおもいつき <? $arr = array('a' => 1, 'b' => 2, 'c' => 3); $arr2['b'] = $arr['b']; unset($arr['b']); print_r($arr2); print_r($arr); ?>
その他の回答 (1)
- fa-ce
- ベストアンサー率42% (9/21)
回答No.2
関数ではないですが、(ご存知かもしれませんが) foreachでループしてとることも出来ます。 foreach($arr as $key => $val){ if($key=="b") $arrA[$key]=$val; else $arrB[$key]=$val; } print_r($arrA); print_r($arrB);
質問者
お礼
ご返答ありがとうございます。 たしかにこのようにやってもできますね。
お礼
ご返答ありがとうございます。 たしかに関数が用意されてる必要もないですかね・・・ yambejpさんの例を簡単な自作関数にしちゃえば済みそうですね。 function hash_splice(&$arr, $key) { $arr2[$key] = $arr[$key]; unset($arr[$key]); return $arr2; } $arr = array('a' => 1, 'b' => 2, 'c' => 3); $arr2 = hash_splice($arr, 'b'); print_r($arr2);//←Array ( [b] => 2 ) print_r($arr);//Array ( [a] => 1 [c] => 3 )