배열에 둘 이상의 요소가 있는지 확인하는 더 좋은 방법은 무엇입니까?


177

배열에 둘 이상의 요소가 있는지 확인해야합니다. 나는 이런 식으로하려고합니다.

if (isset($arr['1']))

다른 전통적인 방법은

if (sizeof($arr)>1)

둘 중 어느 것이 더 낫습니까? 그러한 상황에서 두 가지 대체 방법을 어떻게 판단해야합니까? 어느 쪽이 더 나은지 측정 할 수있는 성능 점검 미터가 있습니까?


여기 $ 가정은 이미 배열에 대해 유효성이 검증되었습니다! 즉, 조건 확인이 이루어지기 전에 이미 배열인지 확인합니다.
tuxnani

답변:


342

이것을 사용하십시오

if (sizeof($arr) > 1) {
     ....
}

또는

if (count($arr) > 1) {
     ....
}

sizeof()에 대한 별칭이며 count()동일한 방식으로 작동합니다.

편집 : 질문의 두 번째 부분에 대한 답변 : 질문의 두 줄은 대체 방법이 아니며 다른 기능을 수행합니다. 첫 번째는 at 값 $arr['1']이 설정되어 있는지 확인 하고 두 번째는 배열의 요소 수를 반환합니다.


8
@ NB : 질문이 편집되었고 초기 코드는 if (sizeof($arr))로 변환되었습니다 if (sizeof($arr) == 1)-분명히 배열에 둘 이상의 요소 가 있는지 확인하지 않습니다 . 이 답변은 정확하며, 투표를해야 할 이유가 없으므로 투표를해야합니다.
Alix Axel

2
본인은 질문의 원래 버전을 보지 않았 음을 인정합니다.이 답변은 답장입니다. 상황이 다르므로 답을 잘못 표시 한 것에 대해 사과드립니다. 원래 질문을 보면 잘못이 아닙니다. 편집 된 질문에 나쁘다.
NB

질문의 두 번째 코드 스 니펫은 $ arr [ '1']의 값이 설정되어 있는지 여부를 확인하며 카운트에 대해 걱정하지 않습니다. 이것은 답변에서 다루지 않았으며, 나는 이것을 언급하고 답변 작성자가 답변을 업데이트하기를 바랍니다. :)
Anders M.

@AndersM. 지적 해 주셔서 감사합니다. 나는 그것을 대답에 반영했습니다.
Chibuzo

<pre> <code> : 0의 인덱스에 대해 <pre> <code>. {3 {guard let testTop : Prediciton = topPredictions [index] else {// 기본 개체} predictionResult.append (testTop)} </ code> < / pre> swift 4
Alex22

44

if(is_array($arr) && count($arr) > 1)

$ arr이 실제로 배열인지 확인하십시오.

sizeof의 별칭이며 countcount 때문에 다음을 선호합니다.

  1. 1 자 이하로 입력
  2. 한 눈에 sizeof는 메모리 측면에서 배열의 크기를 의미 할 수도 있습니다.

$ 편곡이 문자열 인 경우 흠 @AlixAxel하지만, 해당 문자열의 문자 수를 반환 ($ 편곡)를 계산 나중에 너무
안드레아스 웡

아니요, $arr문자열 인 경우을 반환 1합니다.
Alix Axel

12
매뉴얼에서 : var의 요소 수를 반환합니다. var가 Countable 인터페이스를 구현 한 배열 또는 객체가 아닌 경우 1이 반환됩니다. var가 NULL이면 0이 반환 됩니다.
Alix Axel

@AlixAxel oh ok ... 와우 고마워요, 몰랐어요 : o ... 어쨌든 OP가 문자열과 배열 (크기에 관계없이)을 구별하고 싶을 경우를 대비하여 남겨 두겠습니다. that out :)
Andreas Wong 8

6
if (count($arr) >= 2)
{
  // array has at least 2 elements
}

sizeof()의 별칭입니다 count(). 둘 다 배열이 아닌 배열에서도 작동하지만 인수가 배열 또는 Countable객체경우 1보다 큰 값만 반환 하므로 매우 안전합니다.


6

분명히 count($arr) > 1(을 sizeof위한 별칭 일뿐 count)을 사용하는 것이 가장 좋은 솔루션입니다. 배열의 구조에 따라 많은 요소가 있지만 요소는 없을 수 있습니다 $array['1'].



6

내가 선호하는 count()대신 기능 sizeOf()으로 sizeOf()의 별칭입니다 count()및 기타 여러 언어로 같은 것을 의미하지 않는다. 많은 프로그래머 sizeof()는 할당 된 메모리 양을 반환 할 것으로 예상 합니다.


1
또한 여기에 설명되어 있습니다. stackoverflow.com/questions/3974385/php-array-count-or-sizeof 이 질문은 이제 Google가 명중 최고이기 때문에 이것은 가치가 sizeofcount
팀 오길비

4

배열을 확인하려면 empty ()가 sizeof ()보다 낫습니다.

배열에 많은 양의 데이터가 포함 된 경우 배열의 크기를 계산하는 데 더 많은 시간이 걸립니다. 그러나 비어있는 검사는 항상 쉽습니다.

//for empty
  if(!empty($array))
     echo 'Data exist';
  else 
     echo 'No data';


 //for sizeof
 if(sizeof($array)>1)
      echo 'Data exist';
 else 
    echo 'No data';

3

isset ()은 변수가 설정되어 있는지 확인합니다. size 또는 배열에 포함 된 내용과 관련이 없습니다.


2

나는 $ arr이 배열이라고 가정하고 이것이 당신이 찾고있는 것입니다.

if ( sizeof($arr) > 1) ...

1

첫 번째 방법 if (isset($arr['1'])) 은 연관 배열에서 작동하지 않습니다.

예를 들어 다음 코드는 "Nope, not than one"을 표시합니다.

$arr = array(
    'a' => 'apple',
    'b' => 'banana',
);

if (isset($arr['1'])) {
    echo "Yup, more than one.";
} else {
    echo "Nope, not more than one.";
}

0

Swift 4/5에서 배열을 반복하고 기본값을 채 웁니다.

   for index in 0..<3
    {
        let isIndexValid = allObjects.indices.contains(index)
        var yourObject:Class = Class()
        if isIndexValid { yourObject = allObjects[index]}
        resultArray.append(yourObject)
    }
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.