PHP 배열 키 값이 반복될 수 있나요?

PHPz
풀어 주다: 2023-04-19 09:44:57
원래의
539명이 탐색했습니다.

PHP의 배열은 일련의 데이터를 함께 저장하고 숫자나 문자열과 같은 다양한 유형의 키 값을 사용하여 이 데이터에 액세스할 수 있는 매우 일반적인 데이터 구조입니다. PHP 배열로 작업할 때 다음과 같은 질문이 발생할 수 있습니다. 동일한 키를 사용하여 여러 값을 저장할 수 있습니까? 이 기사에서는 이 질문에 답하고 몇 가지 관련 개념과 기술을 소개합니다.

우선, PHP의 배열은 키 값을 모든 유형의 값에 매핑할 수 있는 연관 배열이라는 점을 분명히 해야 합니다. 이는 각 키가 하나의 값에만 해당할 수 있음을 의미합니다. 동일한 키에 여러 값을 저장하려고 하면 새 값이 이전 값을 덮어쓰게 됩니다. 예:

$fruits = array(
  'apple' => 'red',
  'banana' => 'yellow',
  'apple' => 'green'
);

echo $fruits['apple']; // 输出 green
로그인 후 복사

위의 예에서 $fruits 배열에 'apple' => 'green'을 추가하면 이전 'apple' => 'red'를 덮어씁니다. 따라서 $fruits['apple'] 을 인쇄하면 'red'가 아닌 'green'이 반환됩니다.

이것은 PHP에서 동일한 문자열 키를 사용하여 새 요소를 추가하면 새 요소가 이전 요소를 대체하기 때문입니다. 이는 PHP가 배열의 키를 해시 테이블의 키로 취급하고, 새 값의 해시 코드가 이전 값의 해시 코드와 동일하면 새 값이 이전 값을 대체하기 때문입니다. 이는 또한 정수 키를 사용하여 요소를 반복적으로 추가하려고 하면 이전 값을 바꾸는 대신 새 요소가 배열 끝에 추가된다는 의미이기도 합니다.

위 예제에 사용된 문자열 키 외에도 PHP는 정수, 부동 소수점, 부울, 객체 등을 포함한 다른 유형의 키도 지원합니다. PHP는 모든 키를 문자열로 변환하므로, 다른 유형의 키를 가진 요소를 추가하려고 하면 몇 가지 문제가 발생할 수 있습니다. 예:

$fruits = array(
  'apple' => 'red',
  0 => 'hello',
  1.5 => 'world',
  true => 'yes',
  new stdClass() => 'object'
);

print_r($fruits);
로그인 후 복사

위의 예에서는 정수, 부동 소수점, 부울 및 객체와 같은 다양한 유형의 키를 사용하여 요소를 추가하려고 합니다. 그러나 위의 코드를 실행하면 모든 요소가 배열에 추가되지만 키는 문자열로 변환되는 것을 볼 수 있습니다. 예를 들어, 정수 0은 문자열 '0'으로 변환되고, float 1.5는 문자열 '1.5'로 변환되며, 부울 true는 문자열 '1'로 변환되고, 객체는 다음과 같이 변환됩니다. 문자열 '[객체]stdClass'.

어떤 경우에는 중복 키를 사용하여 여러 값을 저장해야 할 수도 있습니다. 이 기능을 달성하기 위해 PHP의 또 다른 데이터 구조인 다차원 배열(다차원 배열)을 사용할 수 있습니다. 다차원 배열은 여러 배열을 중첩할 수 있으며 각 배열은 동일한 유형의 키를 가질 수 있습니다.

예를 들어 다음 예에서는 다차원 배열을 사용하여 여러 색상을 저장하는 방법을 보여줍니다.

$fruits = array(
  'apple' => array('red', 'green'),
  'banana' => array('yellow')
);

print_r($fruits);
로그인 후 복사

위 예에서는 과일 색상 저장을 사용하여 각 요소가 배열인 두 요소가 있는 $fruits 배열을 만들었습니다. . 이제 다음과 같은 키를 사용하여 특정 색상에 액세스할 수 있습니다.

echo $fruits['apple'][0]; // 输出 red
echo $fruits['apple'][1]; // 输出 green
echo $fruits['banana'][0]; // 输出 yellow
로그인 후 복사

다차원 배열을 사용하는 동안 중첩 배열을 사용하여 여러 값을 저장하면 코드가 더 복잡해지고 이로 인해 코드가 더 어려워질 수 있다는 점을 알아야 합니다. 이해하고 유지하세요. 따라서 다른 데이터 구조를 사용하여 여러 값을 저장할 수 있다면 가능하면 중복 키를 피해야 합니다.

요약하자면, PHP의 배열은 연관 배열이므로 동일한 키에 여러 값을 저장할 수 없습니다. 여러 값을 저장해야 하는 경우 다차원 배열이나 기타 데이터 구조를 사용하는 것이 좋습니다. 동시에, 다른 유형의 키를 사용하는 경우 PHP가 자동으로 키를 문자열로 변환하므로 불필요한 오류와 문제가 발생할 수 있다는 점에 유의해야 합니다.

위 내용은 PHP 배열 키 값이 반복될 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!