2013-06-17 15 views
7

Ich habe einige Indizes, die ich aus dem Haupt-Array entfernen muss. Zum Beispiel:Entfernen Sie allgemeine Indizes des Arrays

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

Ich möchte Endergebnis wie:

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

Ich weiß, wir haben array_slice Funktion in PHP, die in der Schleife ausgeführt werden kann, aber ich habe sehr große Daten und ich möchte vermeiden Schleife hier.

+1

könnte versuchen, mit [ 'array_diff'] (http://www.php.net/manual/en/function.array-diff.php) – naththedeveloper

+1

mayb verwenden foreach ($ removeIndex als $ index) { ungesetzt Manipulation ($ mainArray [$ index]) } – tejas

Antwort

8

Vielleicht versuchen 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>'; 

Als ich das versucht, es wieder:

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

Dies ist genau das, was ich gesucht habe ohne" LOOPING ", Danke – Jacklish

+4

@EliasVanOotegem Es gibt ein Zeitlimit, sei geduldig :-) – HamZa

+0

@EliasVanOotegem Ja, auf das Zeitlimit zu warten, gibt dir Kredit in 1 min. – Jacklish

1

versuchen unset Funktion. Das muss perfekt funktionieren.

unset($mainArray[1]); 
+0

'unset' _would_ erfordern eine Schleife, die das OP versucht zu vermeiden –

4

Sie array_diff_key verwenden, beachten Sie, dass in removeIndex Array müssen Sie die Werte machen als 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); 

Wie @Elias darauf hingewiesen hat, können Sie array_flip verwenden, um die Werte in Schlüssel in Ihrem removeIndex Array zu ändern.

+1

Deshalb können Sie ['array_flip()'] (http://www.php.net/manual/en/function.array-flip.php) verwenden – HamZa

+1

ja danke :) @ HamZa – DevZer0

Verwandte Themen