2016-07-14 68 views
2

我需要幫助:) 我要編寫一個腳本,循環訪問數組中的數組,如果在XXX字段中沒有值(爲NULL),則刪除元素。 我的數組是:單車陣列和刪除項目

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)) 

在這個例子中,項[0]已經XXX價值沒有價值,所以我的輸出數組將是:

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

我希望你能幫助我:)

+0

轉換成數組,並使用'unset'方法 – C2486

+1

好了,你有什麼想實現自己的目標那麼遠?我們在這裏幫助您編寫代碼,而不是爲您編寫代碼。 –

+0

你可以使用array_filter()參見http://php.net/array_filter – MrMagix

回答

1

您可以通過使用嵌套foreach()循環循環數據,然後執行一些失敗的測試,保證解除相關變量的安全性。方法如下:

<?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); 

您可以驗證結果HERE

希望這可以爲您提供有關如何正確地執行它自己的一個小祕密......

+0

非常感謝謝謝! –

0

這應該做的工作

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