PHP数组双位数
我有一个数组,我想将它加倍,但在执行数组后,并没有改变如何尽可能少地更正它PHP数组双位数,php,arrays,foreach,Php,Arrays,Foreach,我有一个数组,我想将它加倍,但在执行数组后,并没有改变如何尽可能少地更正它 <?php $arr = array(1, 2, 3, 4); foreach ($arr as $value) { $value = $value * 2; } ?> 您需要将实际数组$arr元素加倍,而不仅仅是循环中的值 <?php $arr = array(1, 2, 3, 4); foreach ($arr as $key => $value) {
<?php
$arr = array(1, 2, 3, 4);
foreach ($arr as $value) {
$value = $value * 2;
}
?>
您需要将实际数组
$arr
元素加倍,而不仅仅是循环中的值
<?php
$arr = array(1, 2, 3, 4);
foreach ($arr as $key => $value) {
$arr[$key] = $value * 2;
}
?>
您的值没有翻倍,因为您不是说
$arr
中的键应该被覆盖。此代码应该工作:
$arr = array(1,2,3,4);
foreach($arr as $key => $value){
$arr[$key] = $value*2;
}
另一种方法是使用array\u map()
您正在使用一个变量$value,该变量在每个for循环中赋值,因此存储在$value中的该值在foreach循环中被覆盖。你有
<?php
$arr = array(1, 2, 3, 4);
foreach ($arr as $value) {
$value = $value * 2;
}
?>
这会奏效的
<?php
$arr = array(1, 2, 3, 4);
foreach ($arr as &$value) {
$value = $value * 2;
}
print_r($arr);
?>
短解决方案,并且在
中受支持,请尝试以下代码
<?php
$arr = array(1, 2, 3, 4);
$arr = array_map(create_function('$v', 'return $v * 2;'), $arr);
print_r($arr);
尝试以下代码:
$arr = array(1, 2, 3, 4);
array_walk($arr, function(&$item){
$item*=2;
});
var_dump($arr);
OP最初的问题是什么?@Rizier123发现值没有加倍。是的,但是为什么OP的代码中的值没有加倍呢?OP也可以简单地通过引用循环:foreach($arr as&$value)
我想我错过了那个,这个被弃用了,你有这个rfc链接吗?
$arr = array(1, 2, 3, 4);
array_walk($arr, function(&$item){
$item*=2;
});
var_dump($arr);