Array =>
[0] => Array
['id'] => '10'
['size'] => Array
['height'] => '25.1'
['width'] => '10.6'
['length'] => '15.7'
['name'] => 'shose'
['comment'] => ''
[1] => Array
['id'] => '10'
['size'] => Array
['height'] => '25.1'
['width'] => '10.6'
['length'] => null
['name'] => 'paper'
['comment'] => 'color is red'
上記のように配列の中の要素の値が全てstring型で、値がない要素だけnullという配列があります。
この配列の全ての文字列を、
整数に変換可能ならint型に変換
浮動小数点型に変換可能ならfloat型に変換
数値に変換不可能ならstring型のまま
nullの場合はnullのまま
にキャストしたいのですがどのようなコードになるのでしょうか?
ネストの深さは一定ではありません。
よろしくお願い致します。
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);
?>
ありがとうございます。
array_walk_recursiveは知りませんでした。
array_mapも使えそうだったのでこちらも使ってみましたがうまく行きました。
コードも書いていただき、大変助かりました!
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# c言語の問題です 課題1 (二分探索木とセット) 大きさ size の配列 array を考える。す 2 2023/01/10 21:08
- C言語・C++・C# C言語初心者 ポインタについて、お助けください、、 2 2023/03/15 23:50
- PHP PHPでCSVを出力するさいに、ループの中で前の行の値を変更したい 3 2022/10/27 17:44
- その他(コンピューター・テクノロジー) 【Tableau Desktop】文字列から8桁の数字を日付型(yyyyMMdd)として取得 1 2023/07/31 10:17
- PHP 配列の値の更新方法について 1 2022/08/05 09:49
- PHP PHPでCSVを出力するさいに、ループの中で前の行の値を変更したい 1 2022/10/27 14:21
- AJAX JavascriptからPHPへのAjax通信でnullが返ってくる 3 2022/08/03 22:00
- PHP htmlspecialcharsが機能していないです。 バグですか? 1 2022/04/05 01:22
- JavaScript 画像の表示位置 3 2022/12/23 08:25
- Visual Basic(VBA) VBAで、特定の文字より後を削除して残った数値を文字列に変換と特定の文字より前も削除したい 3 2022/04/15 19:21
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
スカラーのベクトル微分
-
php で1から100までの素数の表...
-
PHPのmin関数、「1」以上の数値...
-
pythonのnumpyでの繰り返しでの...
-
C言語 最大値と最小値を求めて...
-
STLのvectorで作った配列をメン...
-
CArrayの要素としてCStringArra...
-
Pager::factory()の使い方がわ...
-
C言語で全角文字の扱いについて
-
数独かを判断するプログラム
-
PDOのバインドをforeachでまと...
-
C言語の配列をPush(追加)する...
-
PHPは何故値渡しより参照渡しの...
-
行列
-
System.String.Splitでエラー
-
連想配列から<th>を含むテーブ...
-
np.stack()とnp.array()の違い
-
am()の使い方
-
cakephpでのトランザクション処...
-
verilogで、配列の一部をタスク...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
スカラーのベクトル微分
-
STLのvectorで作った配列をメン...
-
特定の文からメールアドレスの...
-
配列の要素(value)に、変数を...
-
読み(あ行~わ行)ごとに分け...
-
ファイルの書き込みについて教...
-
verilogで、配列の一部をタスク...
-
CArrayの要素としてCStringArra...
-
pythonのnumpyでの繰り返しでの...
-
C言語の配列をPush(追加)する...
-
php キーソート キーが重複した...
-
CArrayのソート
-
【PHP】配列のキー名の修正は可...
-
多次元配列をエンコードする関...
-
PHPは何故値渡しより参照渡しの...
-
cakephpでのトランザクション処...
-
pg_copy_fromの使い方について...
-
array_intersectで空欄を比較し...
-
濁点のソート
-
配列中のあるキー、値を取得し...
おすすめ情報