2013-06-17 23 views
7

Mam niektóre indeksy, które muszę usunąć z głównej tablicy. Na przykład:Usuwanie wspólnych indeksów tablicy

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

chcę końcowy wynik jak:

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

wiem mamy array_slice funkcji w PHP, które mogą być uruchamiane w pętli, ale mam bardzo duże danych i chcę, aby uniknąć zapętlać tutaj.

+1

mogą próbować manipulować przy [ 'array_diff'] (http://www.php.net/manual/en/function.array-diff.php) – naththedeveloper

+1

mayb używać foreach ($ removeIndex jako $ index) { rozbrojony ($ mainArray [$ index]) } – tejas

Odpowiedz

8

Może spróbuj 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>'; 

Kiedy próbowałem tego, powrócił:

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

Dokładnie tego szukałem bez" LOOPING ", Dzięki – Jacklish

+4

@EliasVanOotegem Istnieje limit czasu, bądź cierpliwy :-) – HamZa

+0

@EliasVanOotegem Tak, czekanie na zakończenie limitu zapewni ci kredyt w 1 minutę. – Jacklish

1

spróbuj funkcji unset. To musi działać idealnie.

unset($mainArray[1]); 
+0

'unset' _would_ wymaga pętli, której OP próbuje uniknąć –

4

można użyć array_diff_key pamiętać, że w removeIndex tablicy trzeba dokonać wartości jako 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); 

Jako że @Elias wskazał, że można zmienić wartości na klucze w tablicy removeIndex.

+1

Dlatego możesz użyć ['array_flip()'] (http://www.php.net/manual/en/function.array-flip.php) – HamZa

+1

tak dzięki :) @HamZa – DevZer0

Powiązane problemy