프로그래밍 언어/PHP

PHP 배열이 연관 또는 순차적인지 확인하는 방법

Rateye 2021. 7. 21. 10:47
728x90
반응형

 

질문 : PHP 배열이 연관 또는 순차적인지 확인하는 방법은 무엇입니까?

PHP는 모든 배열을 연관성으로 취급하므로 내장 함수가 없습니다. 누구든지 배열에 숫자 키만 포함되어 있는지 확인하는 상당히 효율적인 방법을 추천 할 수 있습니까?

기본적으로 나는 이것을 구별 할 수 있기를 원합니다.

$sequentialArray = [
    'apple', 'orange', 'tomato', 'carrot'
];

이:

$assocArray = [
    'fruit1' => 'apple',
    'fruit2' => 'orange',
    'veg1' => 'tomato',
    'veg2' => 'carrot'
];
답변

똑같지 않은 두 가지 질문을했습니다.

  • 첫째, 배열에 숫자 키만 있는지 확인하는 방법
  • 둘째, 배열에 0부터 시작하는 순차적 숫자 키가 있는지 확인하는 방법

실제로 필요한 행동을 고려하십시오. (둘 중 하나가 귀하의 목적에 맞을 수 있습니다.)

첫 번째 질문 (단순히 모든 키가 숫자인지 확인)은 Captain kurO가 잘 대답합니다 .

두 번째 질문 (배열이 제로 인덱스 및 순차적인지 확인)의 경우 다음 함수를 사용할 수 있습니다.

function isAssoc(array $arr)
{
    if (array() === $arr) return false;
    return array_keys($arr) !== range(0, count($arr) - 1);
}

var_dump(isAssoc(['a', 'b', 'c'])); // false
var_dump(isAssoc(["0" => 'a', "1" => 'b', "2" => 'c'])); // false
var_dump(isAssoc(["1" => 'a', "0" => 'b', "2" => 'c'])); // true
var_dump(isAssoc(["a" => 'a', "b" => 'b', "c" => 'c'])); // true
출처 : https://stackoverflow.com/questions/173400/how-to-check-if-php-array-is-associative-or-sequential
728x90
반응형