데이터 구조 - 배열(array)
배열은 연속적인 방식으로 데이터를 저장하고 인덱싱을 통해 액세스할 수 있는 구조입니다. PHP 배열과 혼동하지 마십시오. PHP 배열은 실제로 순서가 지정된 해시 테이블로 구현됩니다.
SplFixedArray와 PHP 배열의 주요 차이점:
SplFixedArray는 고정 길이 표준(표준 배열)이며 범위 내의 정수만 인덱스로 허용합니다. 장점은 더 빠른 어레이 구현이 가능하다는 것입니다.
PHP 배열은 실제로 순서가 지정된 해시 테이블(데이터 모음)로 구현됩니다. <?php <br />
<br>
/*<br>
构造一个新的固定数组,指定长度为5<br>
*/<br>
$array = new SplFixedArray(5);<br>
<br>
/*<br>
为指定的索引赋值<br>
*/<br>
$array[1] = 2;<br>
$array[4] = "foo";<br>
<br>
/*<br>
数据结构:<br>
object(SplFixedArray)#1 (5) {<br>
[0]=><br>
NULL<br>
[1]=><br>
int(2)<br>
[2]=><br>
NULL<br>
[3]=><br>
NULL<br>
[4]=><br>
string(3) "foo"<br>
}<br>
*/<br>
var_dump($array);<br>
<br>
/*<br>
数组长度为5<br>
*/<br>
var_dump($array->count());<br>
<br>
/*<br>
将数组的大小增加到10<br>
*/<br>
$array->setSize(10);<br>
<br>
/*<br>
长度增加的数组,原始数据不会发生变化<br>
object(SplFixedArray)#1 (10) {<br>
[0]=><br>
NULL<br>
[1]=><br>
int(2)<br>
[2]=><br>
NULL<br>
[3]=><br>
NULL<br>
[4]=><br>
string(3) "foo"<br>
[5]=><br>
NULL<br>
[6]=><br>
NULL<br>
[7]=><br>
NULL<br>
[8]=><br>
NULL<br>
[9]=><br>
NULL<br>
}<br>
<br>
*/<br>
var_dump($array);<br>
<br>
/*<br>
为扩充长度后的数组赋值<br>
*/<br>
$array[9] = "asdf";<br>
<br>
<br>
/*<br>
将数组缩小到2的大小<br>
将从索引开始处,保存两个长度<br>
object(SplFixedArray)#1 (2) {<br>
[0]=><br>
NULL<br>
[1]=><br>
int(2)<br>
}<br>
*/<br>
$array->setSize(2);<br>
<br>
<br>
<br>
/*<br>
以下行抛出一个RuntimeException:索引无效或超出范围<br>
*/ <br>
try {<br>
$array["username"]="jack";<br>
} catch(RuntimeException $re) {<br>
/*<br>
RuntimeException: Index invalid or out of range<br>
索引只能是整数<br>
*/<br>
echo "RuntimeException: ".$re->getMessage()."n"; <br>
}<br>
<br>
try {<br>
$array[-1]="jack";<br>
} catch(RuntimeException $re) {<br>
/*<br>
RuntimeException: Index invalid or out of range<br>
索引不合法<br>
*/<br>
echo "RuntimeException: ".$re->getMessage()."n";<br>
}<br>
<br>
try {<br>
$array[5]="jack";<br>
} catch(RuntimeException $re) {<br>
/*<br>
RuntimeException: Index invalid or out of range<br>
索引超出数组长度<br>
*/<br>
echo "RuntimeException: ".$re->getMessage()."n";<br>
}<br>
<br>
/*<br>
查看数组大小<br>
getSize/count <br>
*/<br>
echo $array->getSize();<br>
?>
/*
지정된 길이가 5인 새로운 고정 배열을 생성합니다
*/
$array = 새로운 SplFixedArray(5);
/*
지정된 인덱스에 값 할당
*/
$array[1] = 2;
$array[4] = "foo";
/*
데이터 구조:
객체(SplFixedArray)#1 (5) {
[0]=>
NULL
[1]=>
정수(2)
[2]=>
NULL
[3]=>
NULL
[4]=>
문자열(3) "foo"
}
*/
var_dump($array);
/*
배열 길이는 5
*/
var_dump($array->count());
/*
배열 크기를 10으로 늘립니다
*/
$array->setSize(10);
/*
배열의 길이가 늘어나도 원본 데이터는 변경되지 않습니다
객체(SplFixedArray)#1 (10) {
[0]=>
NULL
[1]=>
정수(2)
[2]=>
NULL
[3]=>
NULL
[4]=>
문자열(3) "foo"
[5]=>
NULL
[6]=>
NULL
[7]=>
NULL
[8]=>
NULL
[9]=>
NULL
}
*/
var_dump($array);
/*
확장 배열에 값 할당
*/
$array[9] = "asdf";
/*
배열을 크기 2로 축소
인덱스 시작 부분부터 두 길이를 저장합니다.
객체(SplFixedArray)#1 (2) {
[0]=>
NULL
[1]=>
정수(2)
}
*/
$array->setSize(2);
/*
다음 줄에서는 RuntimeException이 발생합니다. 인덱스가 유효하지 않거나 범위를 벗어났습니다.
*/
시도해보세요 {
$array["username"]="jack";
} catch(RuntimeException $re) {
/*
RuntimeException: 인덱스가 유효하지 않거나 범위를 벗어났습니다
인덱스는 정수만 가능합니다
*/
echo "RuntimeException: ".$re->getMessage()."n"
}
시도해보세요 {
$array[-1]="잭";
} catch(RuntimeException $re) {
/*
RuntimeException: 인덱스가 유효하지 않거나 범위를 벗어났습니다
색인이 잘못되었습니다
*/
echo "RuntimeException: ".$re->getMessage()."n";
}
시도해보세요 {
$array[5]="잭";
} catch(RuntimeException $re) {
/*
RuntimeException: 인덱스가 잘못되었거나 범위를 벗어났습니다
인덱스가 배열 길이를 초과합니다
*/
echo "RuntimeException: ".$re->getMessage()."n";
}
/*
배열 크기 보기
크기/개수
*/
echo $array->getSize();
?>
$data=[1 => 1, 0 => 2, 3 =>
$sfa = SplFixedArray::fromArray($data);
/*
객체(SplFixedArray)#1 (4) {
[0]=>
정수(2)
[1]=>
정수(1)
[2]=>
NULL
[3]=>
정수(3)
}
*/
var_dump($sfa);
$data=[1 => 1, 2 => 2, true =>3,5=>5];$sfa = SplFixedArray::fromArray($data);
/*
1 true가 1로 변환되고, 인덱스 1의 데이터가 3으로 변경됩니다
2 기본적으로 원본 인덱스가 저장되며, 인덱스는 0부터 시작됩니다. 데이터가 없을 경우 기본값은 NULL입니다
객체(SplFixedArray)#2 (6) {
[0]=>
NULL
[1]=>
정수(3)
[2]=>
정수(2)
[3]=>
NULL
[4]=>
NULL
[5]=>
정수(5)
}
*/
var_dump($sfa);
$data=[1 => 1, 2 => 2, true =>3,5=>5];
$sfa = SplFixedArray::fromArray($data,false);
/*
1 원본 배열에 사용된 숫자 인덱스를 저장해 보세요. 기본값은 true입니다.
2 원래 숫자 인덱스를 저장하지 않으면 NULL이 아닌 배열이 반환됩니다.
객체(SplFixedArray)#1 (3) {
[0]=>
정수(3)
[1]=>
정수(2)
[2]=>
정수(5)
}
*/
var_dump($sfa);
$data=[1 => 1, 'a' => 2, true =>
/*
인덱스는 정수여야 합니다
치명적인 오류: '배열은 양의 정수 키만 포함해야 합니다'라는 메시지와 함께 포착되지 않은 예외 'InvalidArgumentException'
*/
//$sfa = SplFixedArray::fromArray($data);
?>

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SecList
SecLists는 최고의 보안 테스터의 동반자입니다. 보안 평가 시 자주 사용되는 다양한 유형의 목록을 한 곳에 모아 놓은 것입니다. SecLists는 보안 테스터에게 필요할 수 있는 모든 목록을 편리하게 제공하여 보안 테스트를 더욱 효율적이고 생산적으로 만드는 데 도움이 됩니다. 목록 유형에는 사용자 이름, 비밀번호, URL, 퍼징 페이로드, 민감한 데이터 패턴, 웹 셸 등이 포함됩니다. 테스터는 이 저장소를 새로운 테스트 시스템으로 간단히 가져올 수 있으며 필요한 모든 유형의 목록에 액세스할 수 있습니다.

PhpStorm 맥 버전
최신(2018.2.1) 전문 PHP 통합 개발 도구

Atom Editor Mac 버전 다운로드
가장 인기 있는 오픈 소스 편집기

ZendStudio 13.5.1 맥
강력한 PHP 통합 개발 환경
