[PHP] 배열

Dev_Honey·2022년 10월 9일
0

PHP

목록 보기
10/11
post-thumbnail

배열(Array)

배열이란 다른 언어에서는 리스트라고도 하는 형태의 데이터 타입이다. 배열은 연관된 데이터를 모아서 관리하기 위해서 사용하는 데이터 타입이다. 변수가 하나의 데이터를 임시로 저장하기 위한 것이라면 배열은 여러 개의 데이터를 저장하기 위한 것이라고 할 수 있다.
배열을 활용하면 생산성도 높일뿐더러, 코드의 유지 및 보수가 더욱 용이합니다.

1. 배열 Syntax

배열을 만드는 기본 문법은

$class = Array("a","b");
$class = ["a","b"];
// 만약 이 배열에서 a에 접근을 원하면, index번호로 접근할 수 있다.
// echo $class[0]; 으로 접근을 하면 된다.
<?php
$member = ['egoing', 'k8805', 'sorialgi'];
echo $member[0].'<br />';
echo $member[1].'<br />';
echo $member[2].'<br />';
?>

결과

  • 함수를 사용하여 배열을 리턴받기
<?php
function get_members(){
    return ['egoing', 'k8805', 'sorialgi'];
}
var_dump(get_members());
?>

결과는 위와 같은 정보가 출력이된다.
또, 함수를 호출한 결과(반환된 값 또는 배열등의 데이터)를 변수에 넣고, 그 변수의 type은 array일거니까 $변수명[index번호]로도 특정 데이터에 접근할 수 있다.
함수명[인덱스번호]로 배열의 특정 index를 호출하는 방법은 php5.4부터 사용한 방법이기에 이후버전에만 통용가능하다.

2. 배열 & 반복문

<?php
function get_members(){
    return ['egoing', 'k8805', 'sorialgi'];
}
$members = get_members();
//배열이 반환되는 함수를 member라는 변수에 담는다.
for($i = 0; $i < count($members); $i++){
    echo ucfirst($members[$i]).'<br />';
}
//count(배열)함수는 배열에 담겨져있는 요소의 개수를 반환해주는 함수
//ucfirst(배열[index number])이라는 함수는 배열의 해당 인덱스의 데이터의 첫 번째 글자를 대문자로 만들어준다.
?>

결과

반복문에 배열을 담는 기법은 나중에 데이터베이스 또는 파일에 있는 데이터를 반복을 통해 배열에 담은 후 내가 원하는 정보를 추출하고, 그것을 가공 및 처리하여 브라우저에 전달할 수 도 있고, 시각화 처리 및 분석을 할 수 있다.

3. 배열의 조작

배열을 조작하는 내장함수 몇 개만 소개하겠다.
먼저,

  • push()는 배열의 젤 끝에 값을 추가할 때 사용한다.
  • pop()은 젤 끝에 있는 값을 꺼낼 때(제거) 사용한다.
  • shift()는 첫 번째 있는 값을 꺼낼 때(제거) 사용한다.
  • unshift()는 첫 번째 인덱스에 어떠한 값을 추가할 때 사용한다.
<?php
$l = [1, 2, 3, 4, 5];
echo count($l);
?>
  • count()는 배열의 요소의 개수를 얻을 수 있다고, 앞서 설명한 바이다.

    5개!
<?php
$arr = ['a', 'b', 'c', 'd', 'e'];
array_push($arr, 'f');
var_dump($arr);
?>

arr이라는 배열의 끝에 'f'를 추가하고
arr를 var_dumpt()로 출력해보면,

<?php
$li = ['a', 'b', 'c', 'd', 'e'];
$li = array_merge($li, ['f','g']);
var_dump($li);
?>

li라는 배열을 가지고보면, array_merge(배열,merge시킬 배열)를 통해서 원하는 값을 배열에 추가할 수 있다.'f','g'를 끝에 넣고 li를 출력해보면,

이렇게 추가된 결과를 볼 수가 있다.

<?php
$li = ['a', 'b', 'c', 'd', 'e', 'z'];
array_shift($li);
var_dump($li);
?>

첫 번째 요소를 제거하기위해 array_shift()를 사용하였다.

<?php
$li = ['a', 'b', 'c', 'd', 'e', 'z'];
array_pop($li);
var_dump($li);

마지막 요소를 제거하기 위해서 array_pop()을 사용하였다.

<?php
$li = ['a', 'b', 'c', 'd', 'e'];
array_unshift($li,'z');
var_dump($li);
?>

array_unshift(배열,값);을 하게되면 값이 제일 첫 번째 인덱스에 추가되게 된다.

이렇게!!!

<?php
$li = ['a', 'b', 'c', 'd', 'e', 'z'];
array_splice($li, 2, 0, 'B');
var_dump($li);
?>
//array_splice의 사용법
array_splice(
    array &$array,
    //배열
    int $offset,
    //시작지점
    ?int $length = null,
    //얼만큼(길이) 또는 개수
    mixed $replacement = []
    // 대체되는 값
): array
  • 원래는 특정 부분을 자르는 함수인데 이렇게 특정 자리에 값을 넣을 수도 있다.
  • 여기서 자를 자리는 2이고, 자를 요소는 0이니까 잘라지는 것은 없고, replacement로 "B"가 index number 2자리에 들어가는 것이다.
<?php
$li = ['c','e','a','b','d'];
sort($li);
var_dump($li);
?>

sort(배열) 함수는 array를 정렬하는 함수이다.

이렇게 a,b,c,d,e 순으로 정렬되는 것을 볼 수 있다.
반대로 정렬하는 함수는 rsort()인데, reverse sort라고 보면 된다.

<?php
$li = ['c','e','a','b','d'];
rsort($li);
var_dump($li);
?>


역전돼서 정렬되는 것을 볼 수 있다.

php array function에 대한 정보를 더 보려면 php 공식 문서인
https://www.php.net/manual/en/ref.array.php
여기에서 참고하여, 코딩을 하면 된다.

4. 연관 배열(Associative array)

PHP에서는 인덱스로 문자를 사용하는 것도 가능하다. 일반적으로 다른 언어에서는 숫자를 인덱스로 사용하는 것을 일반적으로 배열, 혹은 indexed array라고 하고, 문자를 인덱스로 사용하는 것을 연관배열(associative array, hash, dictionary)라고 부르지만 PHP에서는 이를 특별히 구분하지 않고 있기 때문에 하나의 배열의 키 값으로 숫자와 문자 모두를 사용할 수 있다.

<?php
$grades = array('egoing'=>10, 'k8805'=>6, 'sorialgi'=>80);
?>

키와 값 사이에 '=>'를 넣어 주어 배열 요소에 저장될 키와 값을 지정할 수 있다.
즉,egoing은 index이면서 key가 되고, 10이라는 것은 값이 된다.
다른 것 또한 마찬가지!!
다른 방법으로는 $배열이름["키"] = 값; 으로 만들어도 된다.

<?php
$grades = [];
$grades['egoing'] = 10;
$grades['k8805'] = 6;
$grades['sorialgi'] = 80;
var_dump($grades);
?>
//이렇게!!
  • 연관배열에서 특정한 키의 값을 가져오는 방법은
    <?php
    $grades = array('egoing'=>10, 'k8805'=>6, 'sorialgi'=>80);
    echo $grades['sorialgi'];
    ?>
    //그냥 배열이름['키 이름']
    결과는 80이 출력될 것이다.
  • 배열에 담겨있는 값들을 하나하나 꺼내서 열거를 해볼건데, 이때 사용하는 반복문은 foreach를 사용할 것이다.
<?php
$grades = array('egoing'=>10, 'k8805'=>6, 'sorialgi'=>80);
foreach($grades as $key => $value){
    echo "key: {$key} value:{$value}<br />";
}
//foreach 써서 하나한 꺼내보면 $key값에는 'egoing'이, $value에는 값인 10이 담긴다. 다른 키,값들도 반복문이 돌면서 똑같이 담겨 출력이 되는 것이다.
?>
// foreach(배열 as $key => $value){}
// 여기서 as와 =>를 써주는 것을 잘 기억하자 !!

결과는


참조 및 출처

https://opentutorials.org/course/3018/5133 생활코딩 배열

profile
자습서 같은 공부 블로그 만들기!

0개의 댓글