Posted on: December 14, 2021 12:44 PM
Posted by: Renato
Categories: PHP dev webdev programming
Views: 4082
PHP Converter array string para inteiro
php convert array strings to int
Convert array values from string to int?
$ids = explode(',', $string);
var_dump($ids);
[0]=>
string(1) "1"
[1]=>
string(1) "2"
[2]=>
string(1) "3"
}
Você pode conseguir isso seguindo o código,
Apenas criando uma matriz de 1 milhão de inteiros aleatórios entre 0 e 100. Então, implodi-os para obter a string.
for ($i = 0; $i < 1000000; $i++) {
$integers[] = rand(0, 100);
}
###Method 1 This is the one liner from Mark's answer:
$integerIDs = array_map('intval', explode(',', $long_string));
###Method 2
This is the JSON approach:
$integerIDs = json_decode('[' . $long_string . ']', true);
###Method 3 I came up with this one as modification of Mark's answer. This is still using explode() function, but instead of calling array_map() I'm using regular foreach loop to do the work to avoid the overhead array_map() might have. I am also parsing with (int) vs intval(), but I tried both, and there is not much difference in terms of performance.
$result_array = array();
$strings_array = explode(',', $long_string);
foreach ($strings_array as $each_number) {
$result_array[] = (int) $each_number;
}
Results:
0.4804770947 0.3608930111 0.3387751579
0.4748001099 0.363986969 0.3762528896
0.4625790119 0.3645150661 0.3335959911
0.5065748692 0.3570590019 0.3365750313
0.4803431034 0.4135499001 0.3330330849
0.4510772228 0.4421861172 0.341176033
0.503674984 0.3612480164 0.3561749458
0.5598649979 0.352314949 0.3766179085
0.4573421478 0.3527538776 0.3473439217
0.4863037268 0.3742785454 0.3488383293
O resultado final é a média. Parece que o primeiro método foi um pouco mais lento para 1 milhão de inteiros, mas não notei ganho de desempenho 3x do Método 2, conforme declarado na resposta. Acontece que cada loop foi o mais rápido no meu caso. Eu fiz o benchmarking com o Xdebug.
An alternative shorter method could be:
foreach ($r as &$i) $i = (int) $i;
# Gostei deste, resolveu um problema meu.
Use este código com um encerramento (introduzido no PHP 5.3), é um pouco mais rápido do que a resposta aceita e, para mim, a intenção de convertê-lo em um inteiro é mais clara:
// 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)
;
Output will be:
[0]=>
int(1)
[1]=>
int(2)
[2]=>
int(3)
[3]=>
int(4)
}
Alternatively, you can use array_walk_recursive() for a shorter answer:
$value = intval($value);
});
- https://stackoverflow.com/questions/9593765/convert-array-values-from-string-to-int
Donate to Site
Renato
Developer