2014-06-13 2 views
0

나는 Google에서 시험해보고 다음 기능을 수행하려고 노력했습니다. 스칼라 여부와 상관없이 각 배열 요소의 유효성을 검사하는 함수가 필요합니다. 그래서 배열의 각 요소를 반복하고 스칼라를 검사하는 간단한 함수를 작성했습니다.n 레벨의 배열 요소를 확인하는 PHP 함수

실제 요구 사항 인 배열은 다차원 배열 일 수 있습니다. 그래서 배열을 수정하고 아래와 같이 함수를 재귀 적으로 호출했습니다. 그러나 배열의 모든 요소를 ​​통과하지는 않습니다.

function validate_scalar($params) 
{ 
    foreach ($params as $key => $arg) 
    { 
     if (is_array($arg)) 
     { 
      validate_scalar($arg); 
     } 
     else 
     { 
      if (!is_scalar($arg)) 
      { 
        // throwing an exception here if not scalar. 
      } 
     } 
    } 
    return true; 
} 

이 기능을 구현하는 방법이 있습니까? 이것 좀 도와주세요.

+1

어느 기능에없는 정적이 선언 또는 self :: validate_scalar의 자체가 잘못되었습니다. – colburton

+0

감사합니다. 샘플 코드를 수정했습니다. – Raja

+0

array_walk_recursive 배열이 아닌 모든 항목을 반복적으로 탐색하여 콜백/함수를 실행합니다. – Alexander

답변

1

array_walk_recursive

는이 같은 것을 사용할 수 있습니다

<?php 

$array = array(
    'kalle' => 'asdf', 
    'anka' => array(
     123, 
     54324, 
     new stdClass() 
    ) 
); 

array_walk_recursive($array, function ($item, $key) { 
    if (!is_scalar($item)) { 
     echo $key . " => : Is not scalar\n"; 
     return false; 
    } 
    echo $key . " => : Is scalar\n"; 
    return true; 
}); 

array_walk_recursive가 배열 인 값을 무시

출력 :

kalle => : Is scalar 
0 => : Is scalar 
1 => : Is scalar 
2 => : Is not scalar