プロが教えるわが家の防犯対策術!

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

A 回答 (2件)

もっと効率的なものはある気がしますがおもいつき



<?
$arr = array('a' => 1, 'b' => 2, 'c' => 3);
$arr2['b'] = $arr['b'];
unset($arr['b']);
print_r($arr2);
print_r($arr);
?>
    • good
    • 0
この回答へのお礼

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

お礼日時:2008/06/06 15:51

関数ではないですが、(ご存知かもしれませんが)


foreachでループしてとることも出来ます。
foreach($arr as $key => $val){
if($key=="b") $arrA[$key]=$val;
else $arrB[$key]=$val;
}
print_r($arrA);
print_r($arrB);
    • good
    • 0
この回答へのお礼

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

お礼日時:2008/06/06 15:53

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!