- ベストアンサー
連想配列でこういう処理をする関数を探しています
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_○○○)
- みんなの回答 (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); ?>
その他の回答 (1)
- yambejp
- ベストアンサー率51% (3827/7415)
とりあえず適当な関数がぱっと思いつかなかったので 無難に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>"; ?>
お礼
ご返答ありがとうございます。 なるほど、このやり方でもできますね。
お礼
ご返答ありがとうございます。 そうですか、関数はないんですね。 このやり方も良さそうですね。