从文件中检查 int 或 string
Check for int or string from file
我正在尝试打开一个包含多种数据类型的输入文件。像这样:
Woof
50
Meow
30
//...
而且我不太确定该怎么做。我在谷歌上搜索了一些方法,我发现了类似 ctype_digit
、is_digit
和 is_string
的内容。我对它们进行了测试,但仍然没有得到预期的结果。
这是我正在使用的代码片段:
// Sorts the array by requested data type
function sortArray($anArray, $dataType){
$array_string = array();
$array_int = array();
foreach ($anArray as $element){
if (ctype_digit($element)){
array_push($array_int, $element);
}
elseif (ctype_alpha($element)){
array_push($array_string, $element);
}
}
if ($dataType == "int"){
return $array_int;
}
elseif ($dataType == "String"){
return $array_string;
}
} // end function sortArray($anArray, $dataType)
谁能帮忙指出为什么它不起作用?
好吧,你的功能似乎太复杂了。只需使用 array_filter()
过滤掉您不想要的所有其他值,如下所示:
<?php
//As an example to get the data from the file nice and quick
$lines = array_map("trim", file("test.txt", FILE_IGNORE_NEW_LINES));
function filterArrayByType($arr, $type = "int") {
return array_filter($arr, ($type === "int"?"ctype_digit":"ctype_alpha"));
}
$result = filterArrayByType($lines, "string"); //"int"
print_r($result);
?>
输出:
Array ( [0] => Woof [2] => Meow ) //Array ( [1] => 50 [3] => 30 )
如果参数是字符串或浮点数,is_string() 和 is_float() 将给出 true 或 false。 (浮点数可以是 12.21)
- is_string() - 判断变量的类型是否为string
- is_float() - 判断变量的类型是否为 float
- is_int() - 判断变量的类型是否为整型
- is_bool() - 判断变量是否为布尔值
- is_object() - 判断一个变量是否是一个对象
- is_array() - 判断变量是否为数组
请记住,数字也可以是字符串。这完全取决于您如何编写它。所以 is_string 一定是最后一行 is_ 检查。
is_string('23') = true
is_string(23) = false
is_string('23.5') = true
is_string(23.5) = false
我正在尝试打开一个包含多种数据类型的输入文件。像这样:
Woof
50
Meow
30
//...
而且我不太确定该怎么做。我在谷歌上搜索了一些方法,我发现了类似 ctype_digit
、is_digit
和 is_string
的内容。我对它们进行了测试,但仍然没有得到预期的结果。
这是我正在使用的代码片段:
// Sorts the array by requested data type
function sortArray($anArray, $dataType){
$array_string = array();
$array_int = array();
foreach ($anArray as $element){
if (ctype_digit($element)){
array_push($array_int, $element);
}
elseif (ctype_alpha($element)){
array_push($array_string, $element);
}
}
if ($dataType == "int"){
return $array_int;
}
elseif ($dataType == "String"){
return $array_string;
}
} // end function sortArray($anArray, $dataType)
谁能帮忙指出为什么它不起作用?
好吧,你的功能似乎太复杂了。只需使用 array_filter()
过滤掉您不想要的所有其他值,如下所示:
<?php
//As an example to get the data from the file nice and quick
$lines = array_map("trim", file("test.txt", FILE_IGNORE_NEW_LINES));
function filterArrayByType($arr, $type = "int") {
return array_filter($arr, ($type === "int"?"ctype_digit":"ctype_alpha"));
}
$result = filterArrayByType($lines, "string"); //"int"
print_r($result);
?>
输出:
Array ( [0] => Woof [2] => Meow ) //Array ( [1] => 50 [3] => 30 )
is_string() 和 is_float() 将给出 true 或 false。 (浮点数可以是 12.21)
- is_string() - 判断变量的类型是否为string
- is_float() - 判断变量的类型是否为 float
- is_int() - 判断变量的类型是否为整型
- is_bool() - 判断变量是否为布尔值
- is_object() - 判断一个变量是否是一个对象
- is_array() - 判断变量是否为数组
请记住,数字也可以是字符串。这完全取决于您如何编写它。所以 is_string 一定是最后一行 is_ 检查。
is_string('23') = true
is_string(23) = false
is_string('23.5') = true
is_string(23.5) = false