0

一部のデータをフィルタリングするために配列を操作するのに問題があります。配列の例を次に示します。

Array
(
    [0] => Array
        (
            [0] => Array
                (
                    [accounts] => Array
                        (
                            [name] => 
                        )

                    [accounts] => Array
                        (
                            [id] => 84352
                            [a_id] => 552
                            [customer_number] => 1593428
                            [password] => asdasdasdasd
                            [completed] => 
                            [created_date] => 2012-04-11 01:00:03.429465
                            [expiration_date] => 2012-10-11 09:45:12.100404
                        )

                )

        )

    [1] => Array
        (
            [1] => Array
                (
                    [users] => Array
                        (
                            [name] => 
                        )

                    [accounts] => Array
                        (
                            [id] => 106101
                            [a_id] => 574
                            [customer_number] => 429381
                            [password] => dsadasdsdad
                            [completed] => 
                            [created_date] => 2012-09-08 15:40:44.702644
                            [expiration_date] => 2012-09-22 00:00:00
                        )

                )

        )
.....many more

ネストされた foreach ループを使用する必要があることはわかっていますが、難しいのは、解析nameして空白かどうかを確認したいことと、見栄えを良くするために日付をクリーンアップしたいことです。どうすればこれを達成できるか知っている人はいますか?配列をループして配列をコピーしていますが、特定の要素を変更しています。ありがとう!

4

3 に答える 3

1
array_walk_recursive($array, function($val, $key) {
  if ($key == "name" && !$val) { /* name is blank, do something */ }
  if ($key == "created_date") { /* do something */ }
  if ($key == "expiration_date") { /* do something */ }
});
于 2013-06-14T23:01:46.577 に答える
0

このようにしてみてください...

foreach($array as $val){
   foreach($val as $val2) {

     if(empty($val2['users']['name'])){
       echo "NAME IS EMPTY";
       //DO WHATEVER HERE...
      }

     //Process your dates
     $val2['accounts']['created_date'] = date('Y-m-d', strtotime($val2['accounts']['created_date']));
     $val2['accounts']['created_date'] = date('Y-m-d', strtotime($val2['accounts']['expiration_date']));

       }
    }
}
于 2013-06-14T23:02:40.470 に答える
0

これを試してみませんか:

$accounts = array();    
foreach ($array as $a) {  
   foreach ($a as $b) {  
      if (isset($b['users']['name'])) {
          if (empty($b['accounts']['name'])) {
              //name is blank
          }
      }
      if (isset($b['accounts']['created_date'])) {
          $b['accounts']['created_date'] = date('d m Y', strtotime($b['accounts']['created_date']));
      }
      if (isset($b['accounts']['expiration_date'])) {
          $b['accounts']['expiration_date'] = date('d m Y', strtotime($b['accounts']['created_date']));
      }
      $accounts[] = $b;
   }
}

//display new array
echo "<pre>";
print_r($accounts);
echo "</pre>";
于 2013-06-14T23:00:36.807 に答える