PHP 배열의 원리 - array()
페이지 정보
작성자 서방님 댓글 0건 조회 98회 작성일 12-06-14 16:52본문
먼저 PHP의 배열은 모두 associate 배열입니다. (indexed 배열이 아닙니다.)
array() 는 함수인듯하지만 문법입니다.
indexed 배열에는 $a=array(1,2,3,4,5); $b=array("abcd","efgh","hijk"); 와 같은것을 말하고.
associate 배열에는 $A=array("name" => "John", "age" => 25, "hobby" => "Collect"); 와같은 배열을 말합니다.
PHP 배열은 모두 associative 배열이지만, indexed 방식으로도 접근이 가능합니다.
$free[50]=11;
$free[100]=180;
$free[123]="abc";
$free[any]="call";
$free["name"]="Madonna";
이를 보면 알 수 있듯이 PHP 배열은 전부 associate 배열입니다.
그러므로 숫자 50은 배열 인덱스가 아니라 'any'와 같은 key 를 뜻한다는걸 알 수 있습니다.
그러므로 $idx=array("a", "b", "c"); 라고 해도 associate 배열로 정의 돼므로
$idx=array(0=>"a", 1=>"b", 2=>"c"); 라고 인식하므로 index 배열로도 접근이 가능하도록 돼어 있습니다.
이를 이해 했다면 다음과같은 순으로 정의 했을때 foreach 문의 오류를 범하지 않겠죠?!!!!!!!
$free[10]="First";
$free[5]="Second";
$free[12]="Third";
$free[3]="Fourth";
위처럼 정의한 배열은 $free=array("10" => "First", "5" => "Second", "12" => "Third", "3" => "Fourth"); 와 같습니다.
무조건 0부터 12까지의 배열로 착각해서는 안돼겠죠.
배열의 수는 12개가 아닌 4개 이며 foreach 문을 실행 해보면
foreach($free as $value) echo $value." , ";
-> First , Second , Third , Fourth
echo "배열 count: ". count($free);
-> 배열 count: 4
물론 indexed 배열로도 접근이 가능하며 정의돼지않는 $free[3]이나 $free[100], $free[what] 과 같은 값은 에러가 아닌 null 값이죠.
PHP 참 착하죠?
---------------------------------------------------------
활용적 예로 PHP에서는 일반적인 문자열도 배열로 읽어들일 수 있습니다.
$string="abcdefghij";
echo $string[3];
이렇게 하면 3번째 문자 'd' 가 출력 됩니다.
또, 언제든지 배열로 바꿔 사용 할 수 있습니다.
또, indexed 배열처럼 사용 할 수도 있습니다.
$value=1;
for($i=1; $i<100; $i++) $value[$i]=$i++;
그만큼 구속 조건이 융통성이 있어서 쉽고 빠르고 안전하게 프로그래밍이 가능하게 되어 있습니다.
또 배열의 크기가 제각각 달라도 상관 없이 돌아 갑니다.
어지간하면 오류가 없는 참 착한 스크립트입니다.
바로 정의 할때
$a[]=100; 이라함은 "0"=>"100" 을 뜻하고 key 값을 1씩 더하면서 적용합니다.
또는 한꺼번에 $a=array(12,3,'ace', 'duce'); 라고 해도 됩니다.
$ex[3]=13;
$ex[100]="mounting";
$ex[color]="red";
$ex[]="plus";
이렇게하면 key 값은 "3", "100", "color", "101" 순이며
value 값은 "13", "mounting", "red", "plus" 순으로 저장 됩니다.
그러면 가운데 하나 없애볼까요?
unset($ex[color]);
이라고 쓰면 $ex[color]만 없어집니다.
PHP에서의 다차원 배열 또한 융통성 끝내줍니다.
$aa[0]=123;
$aa[1]=456;
$bb[first]=111;
$bb[second]=222;
$dim[2]=$aa;
$dim2[pp]=$bb;
라고하면 $dim[2]와 $dim[pp]는 다차원 배열이 됩니다.
그러므로
echo $dim[2][0];
-> 123
echo $dim2[pp][second];
-> 222
...
이렇게 되죠. 또 다음의
$a= array(
"apple" => array(
"color" => "red",
"taste" => "sweet",
"shape" => "round"
),
"orange" => array(
"color" => "orange",
"taste" => "tart",
"shape" => "ellipse"
),
"banana" => array(
"color" => "yellow",
"taste" => "past",
"shape" => "long"
)
);
echo $a[apple][color];
-> red
echo $a[apple][taste];
-> sweet
echo $a[apple][shape];
-> round
......
라는 식으로 사용 합니다.
댓글목록
등록된 댓글이 없습니다.