如何在PHP中将字符串中的数字保存到int数组中
在我的POST变量中,我有:如何在PHP中将字符串中的数字保存到int数组中,php,arrays,string,Php,Arrays,String,在我的POST变量中,我有:print_r($_POST[“partecipanti”]) 它显示 [“1”、“2”] 我只想将post变量的数字保存在int数组中。我试过了 $array = array(); preg_match_all('/-?\d+(?:\.\d+)?+/', $_POST["partecipanti"], $array); 但是print\r($array)返回 我怎么能有这样一个变量 Array ( [0] => 1 [1] => 2
print_r($_POST[“partecipanti”])代码>
它显示
[“1”、“2”]
我只想将post变量的数字保存在int数组中。我试过了
$array = array();
preg_match_all('/-?\d+(?:\.\d+)?+/', $_POST["partecipanti"], $array);
但是print\r($array)返回
我怎么能有这样一个变量
Array (
[0] => 1
[1] => 2
)
希望我解释得很好,提前谢谢大家preg\u match\u all
每次都返回一个新的多维数组。但您可以直接“弹出”阵列:
$array = array();
preg_match_all('/-?\d+(?:\.\d+)?+/', $_POST["partecipanti"], $array);
$array = $array[0];
返回:
Array (
[0] => 1
[1] => 2
)
要从数组中筛选整数值,请使用
如果要将数组值转换为整数:
$arr = array_map(function($v) { return (int)$v; }, $_POST["participanti"]);
在这两种情况下,$arr只包含整数值。假设$\u POST[“partecipanti”])
是一个字符串,因为您在示例中直接使用它,它的第二个参数是字符串
preg_match_all
返回一个数组,其中匹配项位于第一个条目中,并包含字符串数组。您可以使用$array[0]
获得该数组
除了1
和2
,您的正则表达式还匹配,例如-8.44
或99999999999999
如果您想要int数组,您可以使用回调函数
注意的最大大小和值的舍入
例如:
$str = "test 1, test 2, test 2.3 and -8.44 plus 99999999999999999999999999999999999999999999999999";
preg_match_all('/-?\d+(?:\.\d+)?/', $str, $array);
$array = array_map/**/("intval", $array[0]);
var_dump($array);
这导致:
array(5) {
[0]=>
int(1)
[1]=>
int(2)
[2]=>
int(2)
[3]=>
int(-8)
[4]=>
int(9223372036854775807)
}
php中只有数字的字符串和整数之间没有区别。但如果必须的话,可以使用intval()将其转换为整数。@Andreas当然可以,php中的数字字符串和整数是有区别的。试试is_int(“1”)
它返回false
print\r($array[0])
,我想$\u POST[“partecipanti”]
是一个json字符串,可以解码。@WizardNx不确定你想说什么$_POST始终采用字符串格式。在一个明显的字符串上使用is_int()是毫无意义的。@Andreas它实际上毫无意义是的,但是你说“在php中只有数字的字符串和整数之间没有区别”,这是错误的,或者像我想说的那样:“像is_int(“1”)一样真实”。请注意,在preg\u match\u all
之前,不需要声明$array
。我肯定他是在寻求一种只从数组中获取整数值的方法。不将数组值转换为整数。这是筛选而不是转换,转换需要不同的方法。编辑答案以涵盖筛选和转换。
$str = "test 1, test 2, test 2.3 and -8.44 plus 99999999999999999999999999999999999999999999999999";
preg_match_all('/-?\d+(?:\.\d+)?/', $str, $array);
$array = array_map/**/("intval", $array[0]);
var_dump($array);
array(5) {
[0]=>
int(1)
[1]=>
int(2)
[2]=>
int(2)
[3]=>
int(-8)
[4]=>
int(9223372036854775807)
}