在PHP中修改多维数组

在PHP中修改多维数组,php,arrays,multidimensional-array,Php,Arrays,Multidimensional Array,我有一个多维的输入数组 $input = array( array(11, 12, 13, 14, 15), array(21, 22, 23, 24, 25), array(31, 32, 33, 34, 35), array(41, 42, 43, 44, 45), array(51, 52, 53, 54, 55) ); 我想从这个数组中的每个实体中减去1,这样结果就变成 $output = array( array(10, 11, 12,

我有一个多维的输入数组

$input = array(
    array(11, 12, 13, 14, 15),
    array(21, 22, 23, 24, 25),
    array(31, 32, 33, 34, 35),
    array(41, 42, 43, 44, 45),
    array(51, 52, 53, 54, 55)
);
我想从这个数组中的每个实体中减去1,这样结果就变成

$output = array(
    array(10, 11, 12, 13, 14),
    array(20, 21, 22, 23, 24),
    array(30, 31, 32, 33, 34),
    array(40, 41, 42, 43, 44),
    array(50, 51, 52, 53, 54)
);
我的解决方案

function sub ($a)
{
    return $a-1;  // what should go here? 
}
$output = array_map("sub", $input);

请帮忙

我相信比我聪明的人可以想出另一种使用循环的方法,但如果您不想要
foreach()
,我只能想到使用另一种
array\u map()


我相信比我聪明的人可以想出另一种使用循环的方法,但我只能考虑使用另一种
array\u map()
,如果您不想要
foreach()


另一种方法你可以试试


您可以尝试的另一种方法


array\u map
函数使用一个dim数组,您需要执行两次,请参见代码

<?php 
$input = array(
    array(11, 12, 13, 14, 15),
    array(21, 22, 23, 24, 25),
    array(31, 32, 33, 34, 35),
    array(41, 42, 43, 44, 45),
    array(51, 52, 53, 54, 55)
);
$op = array_map(function($v){
  return array_map(function($v1){return $v1 - 1;}, $v);
}, $input);
print_r($op);

array\u map
函数使用一个dim数组,您需要执行两次,请参阅代码

<?php 
$input = array(
    array(11, 12, 13, 14, 15),
    array(21, 22, 23, 24, 25),
    array(31, 32, 33, 34, 35),
    array(41, 42, 43, 44, 45),
    array(51, 52, 53, 54, 55)
);
$op = array_map(function($v){
  return array_map(function($v1){return $v1 - 1;}, $v);
}, $input);
print_r($op);

这里不是数组映射的专家,我更喜欢用foreach循环编写代码。。。你认为呢?我也这么认为,但是代码会很大,因为你必须遍历每个元素,数组映射基本上做同样的事情,而且会更干净。同意数组映射,但是foreach循环方式不会太大…这里不是数组映射的专家,我更喜欢用foreach循环来编写代码。。。你认为呢?我也这么认为,但是代码会很大,因为你必须遍历每个元素,数组映射基本上做同样的事情,而且会更干净。同意数组映射,但foreach循环方式不会太大…感谢这个解决方案,仅仅使用数组映射一次是不可能的吗?也许我可以在回调函数中使用索引或其他东西?像return$a[some index]-1;总的来说,数组将迭代以减去每个值,即使是用户数组映射方法或循环,例如,
foreach
,如果你想保持索引,那么你可以使用foreach循环twicethanks来解决这个问题,仅仅使用数组映射一次是不可能的吗?也许我可以在回调函数中使用索引或其他东西?像return$a[some index]-1;总的来说,数组将迭代以减去每个值,即使是用户数组映射方法或循环,例如,
foreach
,如果您想保留索引,那么您可以使用foreach循环两次
<?php 
$input = array(
    array(11, 12, 13, 14, 15),
    array(21, 22, 23, 24, 25),
    array(31, 32, 33, 34, 35),
    array(41, 42, 43, 44, 45),
    array(51, 52, 53, 54, 55)
);
$op = array_map(function($v){
  return array_map(function($v1){return $v1 - 1;}, $v);
}, $input);
print_r($op);