SOFTELメモ Developer's blog

会社概要 ブログ 調査依頼 社員募集 ...

【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方式は多次元配列でも中の各要素をコールバックの関数で処理してくれる。

関連するメモ

コメント