• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:配列の中の値の型変換)

配列の中の値の型変換方法とは?

このQ&Aのポイント
  • 配列の中の値をint型、float型、またはstring型に変換する方法を知りたいです。
  • 配列の要素の値が全てstring型で、値がない要素はnullの配列があります。どのようなコードで型変換を行うことができるでしょうか?
  • この記事では、配列の中の値を整数型、浮動小数点型、または文字列型に変換する方法を解説します。ネストの深さに制限はないので、どんな多次元配列にも対応可能です。

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

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

ちょっと雑ですが再帰処理を場合分けして書いてみました <pre> <?PHP $a=array( array( 'id'=>'10' ,'size'=>Array('height'=>'25.1','width'=>'10.6','length'=>'15.7') ,'name'=>'shose' ,'comment'=>'' ) ,array( 'id'=>'10' ,'size'=>array('height'=>'25.1','width'=>'10.6','length'=>null) ,'name'=>'paper' ,'comment'=>'colorisred' ) ,array( 'id'=>'10' ,'size'=>array('height'=>'25','width'=>'10.0','length'=>'0') ,'name'=>'paper' ,'comment'=>'colorisred' ) ); function test_cast(&$item, $key) { if(is_null($item) or $item===''){ $item=null; }elseif(preg_match("/^[0-9]+$/",$item)){ $item=(int) $item; }elseif(preg_match("/^[0-9]+\\.[0-9]+$/",$item)){ $item=(float) $item; } } array_walk_recursive($a, 'test_cast'); var_dump($a); ?>

fantrax
質問者

お礼

ありがとうございます。 array_walk_recursiveは知りませんでした。 array_mapも使えそうだったのでこちらも使ってみましたがうまく行きました。 コードも書いていただき、大変助かりました!

その他の回答 (1)

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

仮に10.0などのような数値はintとみなしたいのでしょうか? それともfloatでしょうか?

fantrax
質問者

お礼

ありがとうございます。 10.0はfloatとみなします。 なので.がある数値だけの文字列は必ずfloatにしたいです。

関連するQ&A