Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/227.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 更改数组的值_Php_Arrays - Fatal编程技术网

Php 更改数组的值

Php 更改数组的值,php,arrays,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'); ?> 是否可以在没有任何循环的情况下执行此操作?尝试使

我想更改不带循环的数组的值-

示例代码:

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

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

尝试使用以下方法:


演示:

可能吗?是的:

$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);
但是,在这种情况下,为什么要避免使用循环呢?

,但在内部,它仍然使用循环

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

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

除了所示的字符串/数组函数解决方法外,您还可以使用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
)

在PHP手册中:“对每个元素应用回调函数后,返回一个包含arr1所有元素的数组。”循环仍在发生,但它被封装在array_map()调用中。@George,neever说后面没有循环,但它肯定更短call@Neal:OP说:“我想更改不带循环的数组的值“你可以在我发布的答案中找到它,但它当然只适用于非动态数据。如果数据是动态的,则需要循环,因此原始问题可能有缺陷。@Vury,非常欢迎:-)请记住在可能的情况下选择一个可接受的答案:-),然后在某个时候需要循环。如果您的数据是动态的,您将需要对每个元素采取行动,而循环是实现这一点的方法。@Vural Acar:在没有警告的情况下与其他人进行在线对话,然后删除您的评论是相当粗鲁的。如果您事先不知道将有多少项,那么您可以分别写出每个搜索/替换,循环是您唯一的其他选择。为什么要避免循环?@Vury这是什么方式?array\u map有一个内部递归,array\u map函数将调用“myCallback”,直到它完成为止。当然,从理论上讲,没有循环或递归就没有办法做到这一点。但我只想知道是否有一个函数可以在没有循环的情况下完成我的工作。示例$ids=array_unique($ids);它清除数组中的替换值,并返回一个不带循环的新数组。这就是我的意思。不管怎样,我已经完成了…它是一个内置的PHP函数。并请控制
lol
。这里不是论坛。你的问题可以改进。您能解释一下为什么要避免循环,以及您的数据是动态的还是静态的吗?我看到了一些关于“这仍然是一个循环”的评论—您应该知道,如果不以非动态方式处理循环,就无法在某个底层避免循环。
Array
(
    [0] => 1113
    [1] => 1156
    [2] => 1342
    [3] => 1132
    [4] => 1165
)