我有一个充满物品的数组,都是字符串。但是许多项目应该是INT。
我知道了
:$myArray = [
'id' => '123',
'title' => 'Hello World',
'count' => '333'
];
我要
:$myArray = [
'id' => 123,
'title' => 'Hello World',
'count' => 333
];
我尝试过:
foreach ($myArray as $key => $value) {
if($value == (int)$value) {
$myArray[$key] = (int)$value;
}
}
然后我的想法用尽了:-/我使用的是PHP 7.1.19(cli)
答案 0 :(得分:2)
尝试i's_numeric',它将发现变量是数字还是数字字符串 http://php.net/manual/en/function.is-numeric.php
答案 1 :(得分:1)
通过int格式的正则表达式匹配字符串:
$ dart --observe <script>.dart
答案 2 :(得分:1)
您可以执行以下操作...
array_walk(&$array,
create_function('&$value', '$value = (int)$value;');
);
答案 3 :(得分:1)
//如果只需要整数,请使用此
$myArray = [
'id' => '123',
'title' => 'Hello World',
'count' => '333'
];
foreach ($myArray as $key => $value) {
if(IsIntegerOnly($value)) {
$myArray[$key] = (int)$value;
}
}
function IsIntegerOnly($str)
{
return (is_numeric($str) && $str >= 0 && $str == round($str));
}
答案 4 :(得分:1)
检查数字然后转换为int
可能会导致浮点数意外截断。这是使用正则表达式处理此类情况的选项:
$myArray = [
'id' => '123',
'title' => 'Hello World',
'count' => '333.7',
'something' => '-55.6',
'something else' => '-.26'
];
foreach ($myArray as $k => $v) {
if (preg_match('`^-?\d+$`', $v)) {
$myArray[$k] = (int)$v;
}
else if (preg_match('`^-?\d*\.\d+`', $v)) {
$myArray[$k] = (double)$v;
}
}
var_dump($myArray);
array(5) {
["id"]=>
int(123)
["title"]=>
string(11) "Hello World"
["count"]=>
float(333.7)
["something"]=>
float(-55.6)
["something else"]=>
float(-0.26)
}
还有一个repl。
答案 5 :(得分:0)
尝试一下
PlatformUI
答案 6 :(得分:0)
您可以使用此
foreach ($myArray as $key => $value) {
if($key == 'id' || $key =='count') {
$myArray[$key] = (int)$value;
}
}