Justin
Justin

Reputation: 332

Subtracting one array from another

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

Answers (7)

james.c.funk
james.c.funk

Reputation: 475

In one line $array3 = $array1 - $array2 is

$array3 = array_intersect($array1, array_diff($array1, $array2));

Upvotes: 1

hsz
hsz

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

user1193035
user1193035

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

Waygood
Waygood

Reputation: 2693

If you dont want to destroy the arrays then:-

  1. create duplicate of array 1
  2. loop through array
  3. IF same key exists in array 2, then subtract the value from current value

code:

$array3=array1;
while(list($key,$value)=each($array3))
{
    if(isset($array2[$key])) $array3[$key]-=$array2[$key];
}

Upvotes: -1

Prasanth Bendra
Prasanth Bendra

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

Php Geek
Php Geek

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

Kumar Saurabh Sinha
Kumar Saurabh Sinha

Reputation: 870

try this

function subArray($arr1, $arr2) {
  $res = array();
  foreach ($arr1 as $key => $value) {
    $res[$key] = $arr2[$key] - $arr1[$key];
  }
}

Upvotes: 0

Related Questions