改变数组的值

发布于 2024-11-08 22:12:46 字数 298 浏览 0 评论 0原文

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

示例代码:

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

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

I want to change the value of an array without loop-

Example code:

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

is it possible to do it without any loop?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

清秋悲枫 2024-11-15 22:12:47

使用 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

Try this using 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);
?>

Demo: http://codepad.org/iGJ3cJW2

初见 2024-11-15 22:12:47

可能的?是的:

$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);

但是为什么在这种情况下要避免使用循环呢?

Possible? Yes:

$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);

But why do you want to avoid using a loop in this case?

ゝ杯具 2024-11-15 22:12:47

array_map(),但在内部它仍然使用循环。

function $mycallback($a) {
   ... process $a
   return $fixed_value;
}

$fixed_array = array_map('mycallback', $bad_array);

array_map(), but internally it'd still be using a loop.

function $mycallback($a) {
   ... process $a
   return $fixed_value;
}

$fixed_array = array_map('mycallback', $bad_array);
若沐 2024-11-15 22:12:46

您还可以使用 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
)

Instead of the shown string/array function workarounds, you can also just use a PHP built-in to filter the arrays:

$ids = array('1113_1', '1156_6', '1342_16', '1132_3', '1165_2');
$ids = array_map("intval", $ids);

This converts each entry into an integer, which is sufficient in this case to get:

Array
(
    [0] => 1113
    [1] => 1156
    [2] => 1342
    [3] => 1132
    [4] => 1165
)
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文