> php教程 > php手册 > 데이터 구조 - 배열(array)

데이터 구조 - 배열(array)

WBOY
풀어 주다: 2016-10-18 08:41:39
원래의
2157명이 탐색했습니다.

데이터 구조 - 배열(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);

?>

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