2010-01-30 4 views
3

배열에 null 값이나 공백 값이있을 수 있습니다. 거기에 값이 있다면 단순히이 배열을 탐색하는 데 사용할 수있는 PHP 함수가 있습니까? 예를 들어배열의 값을 재귀 적으로 통과하는 함수가 있습니까?

: 어떤 경우 현재 값의 에 대해 테스트하고 싶습니다

[0]=> 
[1]=> 
[2]=> test 

. count()는이 배열의 일부일 뿐이지 항상 정확하지 않은 1을 반환하기 때문에 작동하지 않습니다.

Array 
(
    [inputbox] => Array 
     (
      [name] => Array 
       (
        [0] => New Text Document.txt <------- This is what I need to test 
        [1] => 
       ) 

      [type] => Array 
       (
        [0] => text/plain 
       ) 

      [tmp_name] => Array 
       (
        [0] => /var/tmp/phpLg2rFl 
        [1] => 
       ) 

      [error] => Array 
       (
        [0] => 0 
        [1] => 
       ) 

      [size] => Array 
       (
        [0] => 0 
        [1] => 
       ) 
     ) 
) 
+2

인가? 아니면 다차원 배열 일 수도 있습니까? 전자의 경우 재귀가 필요 없습니다. –

+0

총 수를 말할 때, 널이 아닌 값의 총 수 또는 배열의 총 항목 수 또는 가로 지르는 총 항목 수를 의미합니까? – Anthony

+0

이 배열을 만드는 여러 개의 텍스트 상자가있을 수 있으며 사용자가 숫자 1 대신 상자 # 5에서 시작한 경우 적절한 메시지를 표시 할 수 있도록 테스트 할 수 있어야합니다. – Timay

답변

2

내가 아주 잘 당신의 질문을 이해하지 않지만, 아마도 당신이 array_filter()을 찾고?

array_filter($arr)은 빈 값이 모두 제거 된 배열을 반환하므로 test 값을 갖는 인덱스 2 만 보존되므로 나중에 count()을 사용할 수 있습니다. 귀하의 코멘트에 비추어


: 당신이 array_filter()에 대한 두 번째 인수를 제공하지 않는 경우

if (count(array_filter($arr)) > 0) 
{ 
    echo '$arr has values'; 
} 

false로 변환 될 수있는 모든 값은 같은 삭제됩니다있는 것에주의 0 님의 답변 당신은 단지 빈 값을 제거하려면 당신은 할 수 있습니다 :

if (count(array_filter($arr, 'isset')) > 0) 
{ 
    echo '$arr has values'; 
} 

또는 (내 선호하는 버전) :

if (count(array_filter($arr, 'strlen')) > 0) 
{ 
    echo '$arr has values'; 
} 

는 또한 Coalesce function for PHP에 관심이있을 수 있습니다. 마지막 코멘트에 비추어


나는 아직도 생각 array_filter() 작품이 시도 ( $_FILES 가정) : 그것은 평면 배열

if (count(array_filter($_FILES['inputbox']['name'], 'strlen')) > 0) 
{ 
    echo count($_FILES['inputbox']['name']) . ' files'; 
    echo '<br />'; 
    echo count(array_filter($_FILES['inputbox']['name'], 'strlen')) . ' files set'; 
} 
+0

감사합니다. Alix. 전에 array_filter를 사용하지 않았기 때문에 작동 할 수도 있습니다. 배열에있는 값이 모두 있는지 알아 내려고하는 것뿐입니다. 이 배열을 만드는 여러 개의 텍스트 상자가있을 수 있으며 사용자가 숫자 1 대신 상자 # 5에서 시작한 경우이를 테스트 할 수 있어야합니다. – Timay

+0

@Timay : 내 대답이 업데이트되었습니다. 'array_filter()'가 도움이 될 것입니다. –

+0

감사합니다 뭉치 Axil .. 나는 이것을 시도하고 문서를 살펴 봤지만 올바른 결과를 다시 얻지 못합니다. 말하자면 # 9 텍스트 상자에 값을 입력해도 항상 0이 반환됩니다. – Timay

관련 문제