Reputation: 332
I want to subtract one array from another .
for example I have 2 arrays.
Array
(
[0] => 251
[1] => 251
[2] => 130
)
Array
(
[0] => 13
[1] => 13
[2] => 50
)
The resulting array has to be
Array
(
[0] => 238
[1] => 238
[2] => 80
)
Any sort of help on this is appreciated .
Upvotes: 5
Views: 12579
Reputation: 475
In one line $array3 = $array1 - $array2 is
$array3 = array_intersect($array1, array_diff($array1, $array2));
Upvotes: 1
Reputation: 152226
Solution using array_map
:
function subtract($a, $b) {
return $a - $b;
}
$arrayA = array(251, 251, 130);
$arrayB = array( 13, 13, 50);
$output = array_map('subtract', $arrayA, $arrayB);
If the input arrays have different dimensions, it will still work.
Solution with simple foreach loop:
$arrayA = array(251, 251, 130);
$arrayB = array( 13, 13, 50);
$output = array();
for ( $i = 0; $i < size($arrayA); ++$i ) {
$output[] = $arrayA[$i] - $arrayB[$i];
}
Upvotes: 4
Reputation:
I have one sample code here
function array_sub_values($arr1, $arr2)
{
$result = array();
foreach ($arr1 as $k => $val)
$result[] = $val - $arr2[$k];
return $result;
}
So you can do:
$arr1 = array(1, 2, 3);
$arr2 = array(0, 0, 1);
$arr3 = array_sub_values($arr1, $arr2);
Upvotes: 0
Reputation: 2693
If you dont want to destroy the arrays then:-
code:
$array3=array1;
while(list($key,$value)=each($array3))
{
if(isset($array2[$key])) $array3[$key]-=$array2[$key];
}
Upvotes: -1
Reputation: 32750
Try this :
$array1 = array(251, 251, 130);
$array2 = array( 13, 13, 50);
$res = array();
for($i=0;$i<count($array1);$i++){
$res[$i] = $array1[$i]-$array2[$i];
}
echo "<pre>";
print_r($res);
Upvotes: 4
Reputation: 1107
$arr1 = array(251, 251, 130);
$arr2 = array( 13, 13, 50);
$result_array = array();
for ( $i = 0; $i < size($arr1); ++$i ) {
$result_array [] = $arr1[$i] - $arr2[$i];
}
print_r($result_array);
Upvotes: 0
Reputation: 870
try this
function subArray($arr1, $arr2) {
$res = array();
foreach ($arr1 as $key => $value) {
$res[$key] = $arr2[$key] - $arr1[$key];
}
}
Upvotes: 0