如果数据为空,则跳过php foreach中的数据失败

时间:2018-01-22 22:28:37

标签: php

我想在php foreach循环中跳过空数据。

我有以下数据结构:

$sales = array(
  0=>array(
    0=>array({cash_saleno:null, test:1, val:3}) //the data is an object 
         1=>array({cash_saleno:ABCD, test:23, val:4})
         2=>array({cash_saleno:ABCD, test:23, val:4})
      ),
    1=>array()...//structure as above
  )
) 

现在我想跳过索引0,因为cash_Sale_nonull,所以我试过了:

    foreach ($exportedatas as $key => $exportedata) {
       foreach ($exportedata as $exportedatum) {
          if (!empty($exportedatum->cash_Saleno)) {
               ...proceed with saving the data
          }
       }
    }

但是上面没有保存数据,但是当我删除if (!empty($exportedatum->cash_Saleno))检查时,它可以工作,但现在它甚至可以保存空列。我该如何纠正上述问题?

2 个答案:

答案 0 :(得分:1)

我认为你需要一个更多的嵌套循环才能访问cash_saleno。以下代码对我有用:

$sales = array(
  0=>array(
    0=>array(
      0=>array('{"cash_saleno": null, "test": 1, "val": 3}'), //the data is an object
      1=>array('{"cash_saleno": "ABCD", "test": 23, "val": 4}'),
      2=>array('{"cash_saleno": "ABCD", "test": 23, "val": 4}'),
    ),
  )
);

foreach ($sales as $key => $exportedata) {
  foreach ($exportedata as $exportedatum) {
    foreach ($exportedatum as $data) {
      $obj = json_decode($data[0]);
      if (!empty($obj->{'cash_saleno'})) {
        // Save data
      }
    }
  }
}

答案 1 :(得分:0)

您检查了错误日志吗?

$ exportedatum是一个包含该对象的数组,所以你应该测试:if(!empty($ exportedatum [0] - > cash_Saleno))...