2016-07-14 119 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]); 
    } 
}