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
)