我想在没有循环的情况下更改数组的值 -
示例代码:
<?php
//current array
$ids = array('1113_1', '1156_6', '1342_16', '1132_3', '1165_2');
//result should be looks like this
$ids = array('1113', '1156', '1342', '1132', '1165');
?>
是否可以在没有任何循环的情况下完成?
答案 0 :(得分:3)
您可以使用内置的PHP来过滤数组,而不是显示的字符串/数组函数解决方法:
$ids = array('1113_1', '1156_6', '1342_16', '1132_3', '1165_2');
$ids = array_map("intval", $ids);
这会将每个条目转换为一个整数,在这种情况下就足以得到:
Array
(
[0] => 1113
[1] => 1156
[2] => 1342
[3] => 1132
[4] => 1165
)
答案 1 :(得分:2)
使用array_map()
:
<?php
function remove_end($n)
{
list($front) = explode("_", $n);
return $front;
}
$a = array('1113_1', '1156_6', '1342_16', '1132_3', '1165_2');
$a = array_map("remove_end", $a);
print_r($a);
?>
答案 2 :(得分:1)
可能?是:
$ids[0] = substr($ids[0], 0, -2);
$ids[1] = substr($ids[1], 0, -2);
$ids[2] = substr($ids[2], 0, -3);
$ids[3] = substr($ids[3], 0, -2);
$ids[4] = substr($ids[4], 0, -2);
但是你为什么要避免在这种情况下使用循环呢?
答案 3 :(得分:1)
array_map()
,但在内部仍然使用循环。
function $mycallback($a) {
... process $a
return $fixed_value;
}
$fixed_array = array_map('mycallback', $bad_array);