2016-07-14 8 views
2

Ich brauche Hilfe :) Ich muss ein Skript, das, durch ein Array innerhalb eines Arrays, ein Element löschen, wenn in XXX Feld gibt es keinen Wert (ist NULL). Mein Array ist:Ein Array radeln und Element löschen

Array ( 
[idCampaign] => 3 
[idIT] => 322 
    [recipients] =>Array ( 
     [0] => stdClass Object ([name] => minnie [email] => [email protected] [XXX] =>) 
     [1] => stdClass Object ([name] => [email] => [email protected] [XXX] => 0.88451100) 
    )) [date] => MongoDate Object ([sec] => 1468503103 [usec] => 0)) 

In diesem Beispiel ist der Artikel [0] hat, wird kein Wert in XXX Wert so meine Ausgabe-Array sein:

Array ( 
[idCampaign] => 3 
[idIT] => 322 
    [recipients] =>Array ( 
     [1] => stdClass Object ([name] => [email] => [email protected] [XXX] => 0.88451100) 
    )) [date] => MongoDate Object ([sec] => 1468503103 [usec] => 0)) 

ich hoffe, dass Sie mir helfen können :)

+0

in ein Array umwandeln und verwenden 'unset' Methode – C2486

+1

gut, was haben Sie versucht, Ihr Ziel so weit zu erreichen? Wir sind hier, um Ihnen beim Programmieren zu helfen, nicht für Sie. –

+0

Sie könnten array_filter() siehe http://php.net/array_filter – MrMagix

Antwort

1

Sie eine verschachtelte foreach() Loop-Zyklus verwenden könnte durch die Daten und führen dann einige Tests durch, die bei einem Fehler sicherstellen, dass es sicher ist, die relevante Variable zu löschen. Hier ist, wie:

<?php 
    // WE SIMULATE SOME DATA TO POPULATE THE ARRAY, ONLY FOR TESTING PURPOSES 
    $objDate  = new stdClass();  
    $objRez1  = new stdClass(); 
    $objRez2  = new stdClass(); 

    $objRez1->name = "minnie"; 
    $objRez1->email = "[email protected]"; 
    $objRez1->XXX = null; 

    $objRez2->name = null; 
    $objRez2->email = "[email protected]"; 
    $objRez2->XXX = 0.88451100; 

    $objDate->sec = 1468503103; 
    $objDate->usec = 0; 

    // IN THE END WE NOW HAVE A SAMPLE ARRAY (SIMULATED) TO WORK WITH. 
    $arrData  = array(
     'idCampaign' => 3, 
     'idIT'   => 322, 
     'recipients' => array(
      $objRez1, 
      $objRez2 
     ), 
     'date'   =>$objDate, 
    ); 


    // LOOP THROUGH THE ARRAY OF DATA THAT YOU HAVE 
    // NOTICE THE &$data IN THE LOOP CONSTRUCT... 
    // THIS IS NECESSARY FOR REFERENCING WHEN WE UNSET VARIABLES WITHIN THE LOOP 
    foreach($arrData as $key=>&$data){ 
     // SINCE THE XXX KEY IS STORED IN THE 'recipients' ARRAY, 
     // WE CHECK IF THE CURRENT KEY IS 'recipients' & THAT $data IS AN ARRAY 
     if($key == "recipients" && is_array($data)){ 
      // NOW WE LOOP THROUGH THE DATA WHEREIN THE 'XXX' KEY LIVES 
      foreach($data as $obj){ 
       // IF THE VALUE OF THE XXX KEY IS NULL OR NOT SET, 
       // WE SIMPLY UNSET IT... 
       if(!$obj->XXX){ 
        unset($obj->XXX); 
       } 
      } 
     } 
    } 

    var_dump($arrData); 

Sie HERE die Ergebnisse überprüfen können.

Hoffnung könnte man ein wenig Spitze bieten, wie man es umsetzen zu Recht auf eigene Faust ...

+0

danke danke vielen dank! –

0

Dies sollte die Arbeit machen

foreach($arrayOfObjects as $index => $object){ 
    if(!isset($object->xxx) || empty($object->xxx)){ 
     unset($arrayOfObjects[$index]); 
    } 
} 
Verwandte Themen