on
(수정중) PHP 5 - 배열
(수정중) PHP 5 - 배열
▶ 배열
: 배열은 간단히 여러 개의 변수를 모아서 정의하는 것을 의미
1. 배열의 구조와 정의
▶ 1차원 배열
1차원 배열은 가장 기본적인 배열 구조로 선형으로 나열된 변수와 동일
$ar[1] = 'abc';
배열은 배열의 이름과 킷(Key)값(첨자) 그리고 값을 갖는다.
예를 들어 $ar[1]='abc' 에서 ar은 배열의 이름이고 대괄호([])안에 숫자 1은 배열의 킷값으로 첨자라고도 한다.
여기에 할당된 'abc'은 배열에 저장된 값이 된다.
$ar[1] = 'abc'; $ar[2] = 'def'; $ar[3] = 'ghi';
$ar과 같이 배열의 키값(첨자)이 정수인 배열을 스칼라 배열이라 한다. (배열의 킷값에 반드시 숫자만 이용X)
키값은 필요하다면 문자를 사용하는 것도 가능하다.
$row[sno] = 'S01009'; $row[sname] = '관우'; $row[syear] = 4;
$row 배열은 킷값이 sno, sname, syear이다. 이렇게 배열의 킷값이 문자인 것을 연관 배열이라고 한다.
$ar1 = array(1,2,3); $ar2 = array(3 => "abc", 4 => "def", "ghi"); $ar3 = array("a" => "ab", "k" => "a2", 0 => 23);
array()는 배열을 생성하는 함수이다. 배열은 킷값을 가지므로 필요하다면 킷값을 지정할 수도 있고 지
정하지 않을 수도 있다. 생성된 $ar1, $ar2, $ar3의 구조는 다음과 같다.
"ab", "k" => "a2", 23, "z" => 34, "bb"); $a3 = count($ar3); print_r($ar3); echo("- count : $a3"); ?>
print_r 배열 출력하는 함수 (1차원 배열만 출력 가능)
$ar = array(1,2,3,4,5); for($i = 0; $i < 5; $i++){ $value = $ar[$i]; echo("value : {$value}"); }
배열내에 소수, 소수 개수, 소수의 합 출력
1){ for($j =2 ; $value % $j != 0; $j++){} if($value == $j){ echo("$value "); $sum = $sum + $value; $cnt = $cnt +1; } } } echo(""); echo("소수 개수: $cnt "); echo(""); echo("소수 합: $sum "); echo(""); show_source(__FILE__); ?>
▶ 2차원 배열
2차원 배열은 엑셀과 같은 스프레드쉬트 프로그램에서 보는 것처럼 행과 열을 가진 배열을 의미한다. 2차원 배열은 이전에 사용한 1차원 배열과 달리 킷값이 두 개인 배열로 각각의 킷값은 행과 열을 의미한다.
$ar[행][열]
$ar[0][0] = "a"; $ar[0][1] = "b"; $ar[0][2] = "c"; $ar[1][0] = "d"; $ar[1][1] = "e"; $ar[1][2] = "f"; $ar[2][0] = "g"; $ar[2][1] = "h"; $ar[2][2] = "i";
2차원 배열의 킷값을 기술할 때는 [행번호][열번호]순으로 기술한다. 예를 들어 $ar[2][1]은 2행 1열의 데이터로 "h"값을 나타낸다.
2차원 이상인 배열을 다차원 배열이라 하는데 다차원 배열은 킷값의 개수를 늘려 3차원 배열이나 4차원 배열로 확장이 가능하다.
다음은 array() 함수를 이용 $ar 배열을 생성한 것이다.
$ar = array(array("a","b","c"), array("d","e","f"),array("g","h","i"))
2차원 배열을 array() 함수를 이용해서 생성할 때 array()를 중첩해서 다차원 배열을 생성한다. 이와 같
은 방법은 가독성이 높아 일반적으로 사용되는 배열 생성 방법이다.
$ar = array(array(학번 => "915301",이름 => "공융", 학과 => "화학"), array(학번 => "915302",이름 => "사마간", 학과 => "화학"), array(학번 => "925303",이름 => "단규", 학과 => "화학"))
2차원 배열은 킷값이 두 개로 배열의 요소가 두 개의 킷값에 의해 결정
1차원 배열과 같이 $ar[0]이 스칼라 변수와 같이 값을 저장하는 것이 아니다. $ar[0]는 이제 1차원 배열로 간주
즉, $ar[0]는 (학번 => 915301, 이름 => 공융, 학과 => 화학)인 연관 배열로 인식
2차원 배열의 각 행을 1차원 배열로 추출한 다음 추출된 1차원 배열을 출력한다.
$count = count($ar); for($i = 0; $i < $count; $i++) { echo("row = $i : {$ar[$i]['학번']} - {$ar[$i]['이름']} - {$ar[$i]['학과']} "); }
for문을 이용하는 방법은 먼저 2차원 배열의 행의 수를 확인한 다음 행을 순서대로 읽어서 출력하는 방법이다.
가장 읽기 편리하지만 행 번호에 해당하는 킷값이 정수로 구성돼야 한다는 단점이 있다.
그러나 이 방법은 가장 가독성이 높아서 프로그래밍에서 많이 사용되는 방법이다.
Count( ) 함수는 1차원 배열에서는 배열 요소의 수를 반환하고 2차원 배열에서는 행수를 반환한다.
2차원 배열의 출력
테이블 태그에 넣어서 출력하기
ar03.php
"91501","이름" => "공융", "학과" => "화학"), array("학번" =>"91502","이름" => "사마간", "학과" => "화학"), array("학번" =>"91503","이름" => "단규", "학과" => "화학"), array("학번" =>"91504","이름" => "마초", "학과" => "화학")); $count = count($ar); echo(""); for($i = 0; $i <= $count-1; $i++){ echo("{$ar[$i]["학번"]}{$ar[$i]["이름"]}{$ar[$i]["학과"]}"); } show_source(__FILE__); ?>
from http://lemonandgrapefruit.tistory.com/131 by ccl(A) rewrite - 2021-11-23 16:26:26