2016-09-19 7 views
2

Ich verwende zwei Array mit mehrdimensionalen.PHP: - In mehrdimensionalen Array

Ich möchte den gleichen Wert mit allen entfernen Element entfernen, aber ohne irgendeine Funktion verwenden.

Siehe unten meinen Code für mehrdimensionale Array.

<?php 

$a=array("0" => "test_3","1" => "test_4"); 

$b=array('test'=>array("label"=>"TEST","value"=>array(
          "0"=>array("value"=>"test_1","label"=>"[test] Services_1"), 
          "1"=>array("value"=>"test_2","label"=>"[test] Services_2"), 
          "2"=>array("value"=>"test_3","label"=>"[test] Services_3"), 
          "3"=>array("value"=>"test_4","label"=>"[test] Services_4"), 
         ) 
        ), 
     'test1'=>array("label"=>"TEST","value"=>array(
          "0"=>array("value"=>"test_11","label"=>"[test] Services_11"), 
          "1"=>array("value"=>"test_12","label"=>"[test] Services_12"), 
          "2"=>array("value"=>"test_13","label"=>"[test] Services_13"), 
          "3"=>array("value"=>"test_14","label"=>"[test] Services_14"), 
          ) 
         ) 
     ); 
echo "<pre>"; 
print_r($a); 
print_r($b); 
foreach($a as $val) 
    { 
    $search =$val; 
    $result = array_map(function ($value) use ($search) { 
    //print_r($value); 
    if(($key = array_search($search, $value['value'])) !== false) { 
     unset($value['value'][$key]); 
    } 
    }, $b); 
    print_r($result); 
    } 
echo "</pre>"; 
?> 

OUT PUT: -

Array 
(
    [0] => test_3 
    [1] => test_4 
) 
Array 
(
    [test] => Array 
     (
      [label] => TEST 
      [value] => Array 
       (
        [0] => Array 
         (
          [value] => test_1 
          [label] => [test] Services_1 
         ) 

        [1] => Array 
         (
          [value] => test_2 
          [label] => [test] Services_2 
         ) 

        [2] => Array 
         (
          [value] => test_3 
          [label] => [test] Services_3 
         ) 

        [3] => Array 
         (
          [value] => test_4 
          [label] => [test] Services_4 
         ) 
       ) 
     ) 

    [test1] => Array 
     (
      [label] => TEST 
      [value] => Array 
       (
        [0] => Array 
         (
          [value] => test_11 
          [label] => [test] Services_11 
         ) 

        [1] => Array 
         (
          [value] => test_12 
          [label] => [test] Services_12 
         ) 

        [2] => Array 
         (
          [value] => test_13 
          [label] => [test] Services_13 
         ) 

        [3] => Array 
         (
          [value] => test_14 
          [label] => [test] Services_14 
         ) 
       ) 
     ) 
) 

Und hier möchte ich nur so.

Array 
(
    [test] => Array 
     (
      [label] => TEST 
      [value] => Array 
       (
        [0] => Array 
         (
          [value] => test_1 
          [label] => [test] Services_1 
         ) 

        [1] => Array 
         (
          [value] => test_2 
          [label] => [test] Services_2 
         ) 
       ) 
     ) 

    [test1] => Array 
     (
      [label] => TEST 
      [value] => Array 
       (
        [0] => Array 
         (
          [value] => test_11 
          [label] => [test] Services_11 
         ) 

        [1] => Array 
         (
          [value] => test_12 
          [label] => [test] Services_12 
         ) 

        [2] => Array 
         (
          [value] => test_13 
          [label] => [test] Services_13 
         ) 

        [3] => Array 
         (
          [value] => test_14 
          [label] => [test] Services_14 
         ) 
       ) 
     ) 
) 

Geben Sie mir bitte einen Vorschlag.

+0

Haben Sie einen Code mit Ihrem Test, um das Problem zu lösen? – rokas

+0

Ja, ich versuche viele Code dafür, aber ich kann nicht das perfekte Ergebnis @rokas bekommen. –

+0

Verwenden Sie einfach eine Foreach (wahrscheinlich zwei) dann verwenden Sie eine wenn in Array, dann Unset – Ghost

Antwort

1
foreach ($b as $j => $inner) { 
    foreach ($inner['value'] as $k => $value) { 
     if (in_array($value['value'], $a)) {  
      unset($b[$j]['value'][$k]); 
     } 
    } 
} 

Sie müssen sich auf der obersten Ebene des Array ($b) mit richtigen Tasten ungesetzt verwenden.

+0

Danke für die Hilfe, aber nicht funktioniert @JanHolas. –

+1

Sie müssen es falsch kopiert haben, ich habe es gerade getestet und es funktioniert, hier ist der vollständige Code: http://sandbox.onlinephpfunctions.com/code/a73bc763741de2524098c6cf032068ec6f4beccd –

+0

Yaa, mein Fehler tut mir leid .. Es funktioniert gut .. Vielen Dank @ JanHolas .. –

Verwandte Themen