更改数组的值

时间:2011-05-20 19:12:32

标签: php arrays

我想在没有循环的情况下更改数组的值 -

示例代码:

<?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');
?>

是否可以在没有任何循环的情况下完成?

4 个答案:

答案 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);
?>

演示:http://codepad.org/iGJ3cJW2

答案 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);