我有几个问题。得到这个数组:
$array_1 = array(
"1" => "4",
"2" => "8",
"3" => "12",
"4" => "16",
"5" => "20",
"6" => "24",
"7" => "28",
"8" => "32",
"9" => "36",
"10" => "40",
"11" => "44",
"12" => "48",
"13" => "52",
"14" => "56",
"15" => "60",
"16" => "64",
"17" => "68",
"18" => "72",
"19" => "76",
"20" => "80",
"21" => "84",
"22" => "88",
"23" => "92",
"24" => "96",
"25" => "100",
"26" => "104",
"27" => "108",
"28" => "112",
"29" => "116",
"20" => "120",
"31" => "124",
"32" => "128",
"33" => "132",
"34" => "136",
"35" => "140",
"36" => "144",
"37" => "148",
"38" => "152",
"39" => "156",
"40" => "160",
"41" => "164",
"42" => "168",
"43" => "172",
"44" => "176",
"45" => "180",
"46" => "184",
"47" => "188",
"48" => "192",
"49" => "196",
"50" => "200"
);
我想将$array_1
减去1,2,3,4到多个数组中。到目前为止,我通过使用其他数组来完成它:
$array_2 = array(
"1" => "1",
"2" => "1",
...
"49" => "1",
"50" => "1"
);
$array_3 = array(
"1" => "2",
"2" => "2",
...
"49" => "2",
"50" => "2"
);
// All the way to values of 4
然后我会用array_diff
来降低价值。
我首先想知道是否有更好的方法(更有效率)让数组减去而不是每次重复1,2,3,4次。
其次,是否有更有效的方法让$array_1
的值为4的倍数达到200?
第三,我是否需要从$array_1
中减去数组以降低值?有没有更好的方法:$array_1 - 1
预期输出
// $array_1 - $array_2 (value of 1)
$minus_one = array(
"1" => "3",
"2" => "7",
"3" => "11",
...
);
// $array_1 - $array_3 (value of 2)
$minus_two = array(
"1" => "2",
"2" => "6",
"3" => "10",
...
);
// $array_1 - $array_4 (value of 3)
$minus_one = array(
"1" => "1",
"2" => "4",
"3" => "8",
...
);
答案 0 :(得分:3)
虽然xdazz是解决方案是对的。您也可以直接通过
生成最终的预期数组$array_1 = array_fill(1, 50, null);
array_walk($array_1, function(&$item, $key){
$item = $key * 4;
});
$minus_one = $minus_two = $minus_three = array();
foreach($array_1 as $key => $value)
{
$minus_one[$key] = $value - 1 ;
$minus_two[$key] = $value - 2 ;
$minus_three[$key] = $value - 3 ;
}
答案 1 :(得分:2)
你可以像下面那样构建你的数组:
$array_1 = array_fill(1, 50, null);
array_walk($array_1, function(&$item, $key){
$item = $key * 4;
});
var_dump($array_1);
对于$array_2
和$array_3
,只需使用array_fill
即可:
$array_2 = array_fill(1, 50, 1);
$array_3 = array_fill(1, 50, 2);