Jacklish
Jacklish

Reputation: 145

Remove common indexes of array

I have some indexes that I need to remove from main array. For example:

$removeIndex=array(1,3,6);
$mainArray=array('1'=>'a','2'=>'b','3'=>'c','4'=>'d','5'=>'e','6'=>'f');

I want end result like:

 $mainArray=array('2'=>'b','4'=>'d','5'=>'e');

I know we have array_slice function in PHP, which can be run in loop, but I have very huge data and I want to avoid looping here.

Upvotes: 7

Views: 204

Answers (3)

DevZer0
DevZer0

Reputation: 13535

you can use array_diff_key, note that in removeIndex array you need to make the values as keys

$removeIndex=array('1' => 0,'3' => 0,'6' => 0);
$mainArray=array('1'=>'a','2'=>'b','3'=>'c','4'=>'d','5'=>'e','6'=>'f');

$t = array_diff_key($mainArray, $removeIndex);

print_r($t);

As @Elias pointed out you can use array_flip to change the values to keys in your removeIndex array.

Upvotes: 4

Elias Van Ootegem
Elias Van Ootegem

Reputation: 76405

Perhaps try array_diff_key:

$removeIndex=array(1,3,6);
$mainArray=array('1'=>'a','2'=>'b','3'=>'c','4'=>'d','5'=>'e','6'=>'f');
$removeIndex = array_flip($removeIndex);//flip turns values into keys
echo '<pre>';
//compute diff between arr1 and arr2, based on key
//returns all elements of arr 1 that are not present in arr2
print_r(array_diff_key($mainArray, $removeIndex));
echo '</pre>';

When I tried this, it returned:

Array
(
    [2] => b
    [4] => d
    [5] => e
)

Upvotes: 8

heximal
heximal

Reputation: 10517

try unset function. This must work perfect.

unset($mainArray[1]);

Upvotes: 1

Related Questions