Как удалить элементы массива из другого массива?

У меня есть этот массив. Как удалить все те элементы, которые присутствуют в другом массиве, т.е. $remove и повторно проиндексировать конечный массив, начиная с 1, а не 0?

  $info = array( '1' => array('name' => 'abc', 'marks' => '56'), '2' => array('name' => 'def', 'marks' => '85'), '3' => array('name' => 'ghi', 'marks' => '99'), '4' => array('name' => 'jkl', 'marks' => '73'), '5' => array('name' => 'mno', 'marks' => '59') ); $remove = array(1,3); 

Желаемый результат:

  $info = array( '1' => array('name' => 'def', 'marks' => '85'), '2' => array('name' => 'jkl', 'marks' => '73'), '3' => array('name' => 'mno', 'marks' => '59') ); 

До сих пор я пробовал эти два метода. Ничто не сработало для меня.

  if (($key = array_search(remove[0], $info))) { unset($info[$key]); $info = array_values($info); } с  if (($key = array_search(remove[0], $info))) { unset($info[$key]); $info = array_values($info); } 

А также

  $result = array_diff($info, $remove); 

Что-то вроде этого будет работать:

 $result = array_diff_key( $info, array_flip( $remove)); 

Этот array_flip() ваш $remove массив, поэтому ключи становятся значениями, а значения становятся ключами. Затем мы делаем разницу с ключами с array_diff_key() обоих массивов, чтобы получить этот результат :

 Array ( [2] => Array ( [name] => def [marks] => 85 ) [4] => Array ( [name] => jkl [marks] => 73 ) [5] => Array ( [name] => mno [marks] => 59 ) ) 

Наконец, чтобы получить ваш точный результат, вы можете переиндексировать свой массив, передав его через array_values() , но это даст последовательные индексы, начинающиеся с нуля, а не одно:

 $result = array_values( array_diff_key( $info, array_flip( $remove))); 

Если вам действительно нужны индексы, начинающиеся с одного, вам понадобится комбинация array_combine() и range() :

 $result = array_diff_key( $info, array_flip( $remove)); $result = array_combine( range( 1, count( $result)), $result); 

Как насчет использования функции array_diff ?

пример

 $array1 = array("a" => "green", "red", "blue", "red"); $array2 = array("b" => "green", "yellow", "red"); $result = array_diff($array1, $array2); print_r($result); 

это выведет

 Array ( [1] => blue )