我试图将输入的数字流转换为整数数组.代码应该是自我解释的.
$handle = fopen("php://stdin","r");
print("Enter space separated numbers to be made to an array\n");
$numStream = fgets($handle);
print("Creating array from : {$numStream}\n");
//Using explode to create arrays
//now we have an array of Strings
$numArray = explode(" ", $numStream);
var_dump($numArray);
print(getType($numArray[0]));
print("\n");
array_walk($numArray, 'intval');
print(getType($numArray[1]));
print("\n");
var_dump($numArray);
print_r($numArray);
Run Code Online (Sandbox Code Playgroud)
我试图转换String数组,
array_walk($numArray, 'intval')
Run Code Online (Sandbox Code Playgroud)
最后两个打印块在转换之前和之后打印数组元素的类型.
两种情况下的输出都是字符串
string
string
Run Code Online (Sandbox Code Playgroud)
我想知道这里发生了什么?可能..
或者两者都可能.
添加完整的输入和输出,
$ php arrays/arrayStringToInteger.php
Enter space separated numbers to be made to an array
1 1
Creating array from : 1 1
Array
(
[0] => 1
[1] => 1
)
string
string
/home/ubuntu/workspace/basics/arrays/arrayStringToInteger.php:22:
array(2) {
[0] =>
string(1) "1"
[1] =>
string(2) "1
"
}
Array
(
[0] => 1
[1] => 1
)
Run Code Online (Sandbox Code Playgroud)
u_m*_*der 16
您应该使用array_map而不是array_walk:
$numArray = array_map('intval', $numArray);
Run Code Online (Sandbox Code Playgroud)
如果您仍想使用array_walk- 请参阅说明的手册:
如果回调需要使用数组的实际值,请将回调的第一个参数指定为引用.然后,对这些元素所做的任何更改都将在原始数组中进行.
由于intval函数不能与引用一起使用,因此需要将其包含在其他逻辑中,例如:
array_walk($numArray, function(&$v){ $v = intval($v); });
// which is the same as @BizzyBob solution)))
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
15369 次 |
| 最近记录: |