php intval エラー - 配列の値を文字列からintに変換する方法は?





5 Answers

これは、 array_map()array_map()array_map()よりほぼ3倍高速です。

$integerIDs = json_decode('[' . $string . ']', true);
数値 取得 違い
$string = "1,2,3"
$ids = explode(',', $string);
var_dump($ids);

返品

array(3) {
  [0]=>
  string(1) "1"
  [1]=>
  string(1) "2"
  [2]=>
  string(1) "3"
}

値が文字列型ではなくint型である必要があります。 foreachを使って配列をループし、各文字列をintに変換するよりも、これを行うより良い方法はありますか?




PHP 5.3導入された)クロージャでこのコードを使用してください。これは受け入れられた答えよりも少し速く、私にとっては整数にキャストしようとする意図がはっきりしています:

// if you have your values in the format '1,2,3,4', use this before:
// $stringArray = explode(',', '1,2,3,4');

$stringArray = ['1', '2', '3', '4'];

$intArray = array_map(
    function($value) { return (int)$value; },
    $stringArray
);

var_dump($intArray);

出力は次のようになります。

array(4) {
  [0]=>
  int(1)
  [1]=>
  int(2)
  [2]=>
  int(3)
  [3]=>
  int(4)
}



次のような配列がある場合:

$runners = ["1","2","3","4"];

そして、整数に変換して配列内に保持したい場合は、次のようにしてください。

$newArray = array_map( create_function('$value', 'return (int)$value;'),
            $runners);



代わりの短い方法は、

$r = explode(',', $s);
foreach ($r as &$i) $i = (int) $i;

それは方法3と同じ性能を有する。




マルチディメンショナルアレイを使用している場合は、前述の解決策のどれも動作しません。 ここに私のソリューションです:

public function arrayValuesToInt(&$array){
  if(is_array($array)){
    foreach($array as &$arrayPiece){
      arrayValuesToInt($arrayPiece);
    }
  }else{
    $array = intval($array);
  }
}

次に、これを実行します:

arrayValuesToInt($multiDimentionalArray);

これは次のような配列になります:

[["1","2"]["3","4"]]

こんな風に見える:

[[1,2][3,4]

(これはどんな深さでも機能します)




Related