• ベストアンサー

連想配列でキーを利用して一部分を引き抜きたい

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'など)を指定して引き抜きたいです。 そのような関数などはあるのでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.1

もっと効率的なものはある気がしますがおもいつき <? $arr = array('a' => 1, 'b' => 2, 'c' => 3); $arr2['b'] = $arr['b']; unset($arr['b']); print_r($arr2); print_r($arr); ?>

takagoo100
質問者

お礼

ご返答ありがとうございます。 たしかに関数が用意されてる必要もないですかね・・・ 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 )

その他の回答 (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);

takagoo100
質問者

お礼

ご返答ありがとうございます。 たしかにこのようにやってもできますね。

関連するQ&A