2013-05-07 4 views
0

У меня есть многомерный массив следующегопроверка PHP, если массив пуст

Array 
(
    [0] => Array 
     (
      [featured] => Yes 
      [job_code] => WT3 
      [title] => Senior Test Engineer - dB Testing 
      [no_of_pos] => 5 
      [experience] => 3 to 5 years 
      [job_desc] => Work with Dev counterparts to understand the implementation details. 
Adhere to all quality standards from QA perspective. 
Able to independently come up with test cases based on the analysis of functionality. 
Test planning and Test Design (Creation of Test scenarios/Test Cases) 
Preparation of Test environment 
Execution of Test cases 
Identification, reporting and tracking of defects 
      [skillsets] => Should be experienced in testing on Mac OS X 
Should be familiar with terms such as plist, starutp options on Mac, OS versions 
Should be familiar with Terminal and Console on Mac OS X 
Should be familiar with Apple Script Editor or Automator 
Should be able to troubleshoot basic boot issues on Mac 
      [keywords] => Black Box testing, Web Testing, e-Commerce, SQL queries/database testing 
     ) 

    [1] => Array 
     (
      [featured] => No 
      [job_code] => MNX-7A 
      [title] => Test Engineer - Mac OS X 
      [no_of_pos] => 1 
      [experience] => 3 to 5 years 
      [job_desc] => Should be excellent in Black Box Test Case Design 
Should be able to understand business requirements and develop relevant scenarios and test cases 
Good knowledge on the SDLC/STLC 
Preparation of Test environment 
Execution of Test cases 
Identification, reporting and tracking of defects 
      [skillsets] => Should be experienced in testing on Mac OS X 
Should be familiar with terms such as plist, starutp options on Mac, OS versions 
Should be familiar with Terminal and Console on Mac OS X 
Should be familiar with Apple Script Editor or Automator 
Should be able to troubleshoot basic boot issues on Mac 
      [keywords] => Black Box Testing, Mac OS X 
     ) 

) 

Я хочу итерацию через массив и убедитесь, что все поля имеют значение и не пусто.

Каков наилучший способ сделать это?

+2

! Опорожнение –

+0

($ обр) делает, что проверить все ключи и значения? –

ответ

1

Пожалуйста, попробуйте следующее:

<?php 

$data=array 
(
    0 => array 
     (
      'featured' => 'Yes', 
      'job_code' => 'WT3', 
      'title' => 'Senior Test Engineer - dB Testing', 
      'no_of_pos' => '5', 
      'experience' => '3 to 5 years', 
      'job_desc' => 'Work with Dev counterparts to understand the implementation details. 
Adhere to all quality standards from QA perspective. 
Able to independently come up with test cases based on the analysis of functionality. 
Test planning and Test Design (Creation of Test scenarios/Test Cases) 
Preparation of Test environment 
Execution of Test cases 
Identification, reporting and tracking of defects 
      [skillsets] => Should be experienced in testing on Mac OS X 
Should be familiar with terms such as plist, starutp options on Mac, OS versions 
Should be familiar with Terminal and Console on Mac OS X 
Should be familiar with Apple Script Editor or Automator 
Should be able to troubleshoot basic boot issues on Mac', 
      'keywords' => 'Black Box testing, Web Testing, e-Commerce, SQL queries/database testing' 
     ), 

    1 => array 
     (
      'featured' => 'No', 
      'job_code' => 'MNX-7A', 
      'title' => 'Test Engineer - Mac OS X', 
      'no_of_pos' => '1', 
      'experience' => '3 to 5 years', 
      'job_desc' => 'Should be excellent in Black Box Test Case Design 
Should be able to understand business requirements and develop relevant scenarios and test cases 
Good knowledge on the SDLC/STLC 
Preparation of Test environment 
Execution of Test cases 
Identification, reporting and tracking of defects', 
      'skillsets' => 'Should be experienced in testing on Mac OS X 
Should be familiar with terms such as plist, starutp options on Mac, OS versions 
Should be familiar with Terminal and Console on Mac OS X 
Should be familiar with Apple Script Editor or Automator 
Should be able to troubleshoot basic boot issues on Mac', 
      'keywords' => 'Black Box Testing, Mac OS X' 
     ) 

); 

function anyEmpty($array) { 
    foreach ($array as $arr) { 
     if (!is_array($arr)) { 
      if (empty($arr)) { 
       return true; 
      } 
     } else { 
      if (anyEmpty($arr)) { 
       return true; 
      } 
     } 
    } 
    return false; 
} 

var_dump(anyEmpty($data)); 

?> 

В этом примере все поля установлены, так что это будет эхо bool(false). Однако, если я сменил одно из полей на '', он вернет true.

Пример:

<?php 

$data=array 
(
    0=>array(
     0=>"hello", 
     1=>array(
      0=>"world" 
     ), 
     2=>array(
      0=>"my name", 
      array(
       0=>"" 
      ) 
     ) 
    ) 
); 

function anyEmpty($array) { 
    foreach ($array as $arr) { 
     if (!is_array($arr)) { 
      if (empty($arr)) { 
       return true; 
      } 
     } else { 
      if (anyEmpty($arr)) { 
       return true; 
      } 
     } 
    } 
    return false; 
} 

var_dump(anyEmpty($data)); 

?> 

Это теперь возвращает bool(true).

1

Я думаю, что простая петля всегда ускоряется быстрее.

function yourFunction($array, $key, $val) { 
    foreach ($array as $item) 
     if (isset($item[$key]) 
      // do what you intend to here 
} 
1

Вы можете использовать ниже один. Он ссылается на php.net here

function is_multiArrayEmpty($multiarray) { 
     if(is_array($multiarray) and !empty($multiarray)){ 
      $tmp = array_shift($multiarray); 
       if(!is_multiArrayEmpty($multiarray) or !is_multiArrayEmpty($tmp)){ 
        return false; 
       } 
       return true; 
     } 
     if(empty($multiarray)){ 
      return true; 
     } 
     return false; 
    } 
Смежные вопросы