【php】配列の要素をまとめて数値に変換する
問題
配列の各要素を数値に変換してほしいです。
[1,2,3,-1,-2,-3, 'あああ', '00456', '123abc']
→ [1,2,3,-1,-2,-3, 0, 456, 123]
答え
・foreach 方式
<?php
$arr = [1,2,3,-1,-2,-3, 'あああ', '00456', '123abc'];
$arr2 = [];
foreach ($arr as $v) {
$arr2[] = (int) $v;
}
var_dump($arr2);
・array_map方式
<?php
$arr = [1,2,3,-1,-2,-3, 'あああ', '00456', '123abc'];
$arr2 = array_map('intval', $arr);
var_dump($arr2)
・filter_var 方式
<?php
$arr = [1,2,3,-1,-2,-3, 'あああ', '00456', '123abc'];
$arr2 = filter_var($arr, FILTER_CALLBACK, array('options' => 'intval'));
var_dump($arr2)
foreach は高速。array_map方式やfilter_var方式より速いぐらい高速。
各方式とも、配列が小さければ foreach方式と大差ない。
foreach方式、array_map方式は1次元の配列しか想定していないが、filter_var方式は多次元配列でも中の各要素をコールバックの関数で処理してくれる。
コメント