Php 如何从另一个数组中删除一个数组元素?

Php 如何从另一个数组中删除一个数组元素?,php,arrays,multidimensional-array,Php,Arrays,Multidimensional Array,我有这个数组。如何删除另一个数组中存在的所有元素,即$remove,并从1开始重新索引最终数组,而不是从0开始 $info = array( '1' => array('name' => 'abc', 'marks' => '56'), '2' => array('name' => 'def', 'marks' => '85'), '3' => array('name' => 'ghi', 'marks' =>

我有这个数组。如何删除另一个数组中存在的所有元素,即
$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);
  }


类似这样的方法会奏效:

$result = array_diff_key( $info, array_flip( $remove));
这是您的
$remove
数组,因此键成为值,值成为键。然后,我们用两个数组的

最后,为了产生精确的输出,您可以通过传递数组来重新索引数组,但这将产生从零开始的顺序索引,而不是从一开始的顺序索引:

$result = array_values( array_diff_key( $info, array_flip( $remove)));
如果确实需要索引从一开始,则需要和的组合:

使用函数怎么样

示例

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

Array
(
    [1] => blue
)

然后重新索引键(从1开始),就完成了;)是否需要将该数组保持为具有指定键的关联数组?
$result = array_diff_key( $info, array_flip( $remove));
$result = array_combine( range( 1, count( $result)), $result);
$array1 = array("a" => "green", "red", "blue", "red");
$array2 = array("b" => "green", "yellow", "red");
$result = array_diff($array1, $array2);
print_r($result);
Array
(
    [1] => blue
)