2016-05-23 11 views
0

Bitte helfen Sie mir zu verstehen, wie es mir gelingt, ein multidimensionales mit Hilfe anderer Array-Wert als Schlüssel für das erste Array zu filtern.Filter multidimensionales Array durch Werte von anderen Array

$multidimensional = Array (
          [0] => Array('var1' => val1), 
          [1] => Array('var2' => val2), 
          [2] => Array('var3' => val3), 
          [3] => Array('val4' => val4) 
         ); 
$filter = Array(1, 3); 

sollte das Endergebnis sein:

$multidimensional = Array (
          [1] => Array('var2' => val2), 
          [3] => Array('val4' => val4) 
         ); 

Es ist etwas ähnlich wie array_slice oder ein anderes Verfahren sein sollte, wie leicht solche Aufgabe ausführen zu. Vielen Dank im Voraus!

+5

[array_intersect_key] (http://php.net/manual/en/function.array-intersect-key.php) – Dale

Antwort

2

können Sie verwenden, um die array_intersect_key Funktion:

$result = array_intersect_key($multidimensional, array_flip($filter)); 
+0

Danke, es ist genau das, was ich brauche;) Sanatate! :) –

1

Um mit einem kleinen Beispiel auf meinen Kommentar zu erweitern

<?php 

$arrayOne = [ 
    1 => ['foo' => 'bar'], 
    2 => ['foo' => 'bar'], 
    3 => ['foo' => 'bar'], 
    4 => ['foo' => 'bar'], 
]; 

$arrayTwo = [1 => [], 3 => []]; 

print_r(array_intersect_key($arrayOne, $arrayTwo)); 

siehe array_intersect_key auf php.net

1

Eine weitere Variante array_diff_key und array_flip mit Funktionen:

$multidimensional = array_diff_key($multidimensional, array_diff_key($multidimensional, array_flip($filter))); 

print_r($multidimensional); 

Der Ausgang:

Array 
(
    [1] => Array 
     (
      [var2] => val2 
     ) 

    [3] => Array 
     (
      [val4] => val4 
     ) 
) 

http://php.net/manual/en/function.array-diff-key.php