• ベストアンサー

連想配列でこういう処理をする関数を探しています

PHP5.2.4を使用しています。 どういうふうに説明してよいのか分かりませんが、 $arr = array(  'key1' => array('value1'=>1,'value2'=>11),  'key2' => array('value1'=>2,'value2'=>22),  'key3' => array('value1'=>3,'value2'=>33), ); という連想配列を例えばキー'value2'の値だけが欲しく、 $arr = array(  'key1' => 11,  'key2' => 22,  'key3' => 33, ); と、変換したいのですが、そのような関数はあるのでしょうか? またこのような処理をする関数を自作する場合、 どのような関数名が適切でしょうか?(array_○○○)

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

  • ベストアンサー
  • mpx
  • ベストアンサー率71% (149/209)
回答No.2

>> と、変換したいのですが、そのような関数はあるのでしょうか? ずばりの関数は有りませんが、array_combineとarray_mapを併用すれば実現できそうです。サンプルスクリプトは下記 <?php $arr = array( 'key1' => array('value1'=>1,'value2'=>11), 'key2' => array('value1'=>2,'value2'=>22), 'key3' => array('value1'=>3,'value2'=>33), ); function value2($x){return $x['value2'];} $arr=array_combine(array_keys($arr),array_map("value2",$arr)); print_r($arr); ?>

takagoo100
質問者

お礼

ご返答ありがとうございます。 そうですか、関数はないんですね。 このやり方も良さそうですね。

その他の回答 (1)

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

とりあえず適当な関数がぱっと思いつかなかったので 無難にforeachをつかってみました <? $arr = array( 'key1'=>array('value1'=>1,'value2'=>11), 'key2'=>array('value1'=>2,'value2'=>22), 'key3'=>array('value1'=>3,'value2'=>33), ); foreach($arr as $key=>$datas) $arr[$key]=$datas["value2"]; print "<pre>"; print_r($arr); print "</pre>"; ?>

takagoo100
質問者

お礼

ご返答ありがとうございます。 なるほど、このやり方でもできますね。