7

我有一些索引需要从主数组中删除。例如:

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

我想要最终结果,例如:

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

我知道我们array_slice在 PHP 中有可以循环运行的函数,但是我有非常大的数据,我想避免在这里循环。

4

3 回答 3

8

也许尝试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>';

当我尝试这个时,它返回:

大批
(
    [2] => b
    [4] => d
    [5] => e
)
于 2013-06-17T07:55:10.483 回答
4

您可以使用array_diff_key,请注意,在removeIndex数组中您需要将值设为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);

正如@Elias 指出的那样,您可以使用array_flip将值更改为removeIndex数组中的键。

于 2013-06-17T07:56:43.333 回答
1

尝试取消设置功能。这必须完美运行。

unset($mainArray[1]);
于 2013-06-17T07:52:49.363 回答