[PHP] 배열과 List


Study/PHP  2019. 9. 10. 23:34

안녕하세요. 명월입니다.


이 글은 PHP에서 사용되는 배열과 List에 대해서 설명하겠습니다.


Java나 C#에서는 배열(Array)와 List는 다른 문법입니다. Array는 정적으로 갯수를 정해놓고 선언해서 데이터를 설정하고 List의 경우는 배열의 갯수를 미리 선언하지 않고 연결 리스트의 구조로 계속적으로 추가되는 형태를 말합니다.

그러나 PHP에서는 따로 배열과 List가 따로 구분이 있지는 않습니다.


선언하는 방식은 다음과 같습니다.

// array함수를 이용해서 선언하는 방법
$type1 = array("Test", "Hello", "World");

// 그냥 따로 선언이 필요없이 []를 이용해서 선언하는 방법
$type2[0] = "Test";
$type2[1] = "Hello";
$type2[2] = "World";
<?php
  $title = "title";
  $type1 = array("Test", "Hello", "World");
  
  $type2[0] = "Test";
  $type2[1] = "Hello";
  $type2[2] = "World";
?>
<!DOCTYPE html>
<html>
<head>
  <title>
    <?=$title?>
  </title>
</head>
<body>
  <?php
    foreach($type1 as $item) {
      echo $item." ";
    }
  ?>
  <br />
  <?php
    foreach($type2 as $item) {
      echo $item." ";
    }
  ?>
</body>
</html>

그리고 PHP에서는 연관 배열이라고 해서 다른 언어에서는 Map이나 Table처럼 사용하는 배열이 있습니다.

위 배열은 인덱스를 수를 넣었지만 수 대신에 문자를 넣으면 연관 배열이 됩니다.

// array함수를 이용해서 선언하는 방법
$type1 = array(
           "First" => "Test", 
           "Second" => "Hello", 
           "Third" => "World"
         );

// 그냥 따로 선언이 필요없이 []를 이용해서 선언하는 방법
$type2["First"] = "Test";
$type2["Second"] = "Hello";
$type2["Third"] = "World";

여기까지 배열(리스트)의 정의를 했으면 이제 배열(리스트)에서 insert, remove를 사용해야 합니다.

먼저 arary_push와 arary_pop 함수가 있는데 arary_push는 가장 아래, 즉 위처럼 [3]까지 넣었으면 [4]에 추가하는 함수입니다. arary_pop는 가장 아래, [4]라고 하면 [4]배열을 제거하는 함수입니다.

링크 - https://www.php.net/manual/en/function.array-push.php

링크 - https://www.php.net/manual/en/function.array-pop.php

<?php
  $title = "title";
  $type1 = array("Test", "Hello", "World");
  // [4] 배열에 push를 넣는다.
  array_push($type1,"push");
?>
<!DOCTYPE html>
<html>
<head>
  <title>
    <?=$title?>
  </title>
</head>
<body>
  <?php
    foreach($type1 as $key => $value) {
      echo $key." => ".$value."<br />";
    }
  ?>
  <br />
  <br />
  <br />
  <?php
    // [4]배열를 제거한다.
    array_pop($type1);
  ?>
  <br />
  <?php
    foreach($type1 as $key => $value) {
      echo $key." => ".$value."<br />";
    }
  ?>
</body>
</html>

여기서 pop은 가장 하위이지만 가장 상위 배열를 제거하는 함수(array_shift)도 있습니다.

링크 - https://www.php.net/manual/en/function.array-shift.php

<?php
  $title = "title";
  $type1 = array("Test", "Hello", "World");
  
  array_push($type1,"push");
?>
<!DOCTYPE html>
<html>
<head>
  <title>
    <?=$title?>
  </title>
</head>
<body>
  <?php
    foreach($type1 as $key => $value) {
      echo $key." => ".$value."<br />";
    }
  ?>
  <br />
  <br />
  <br />
  <?php
    array_shift($type1);
  ?>
  <br />
  <?php
    foreach($type1 as $key => $value) {
      echo $key." => ".$value."<br />";
    }
  ?>
</body>
</html>

중간에 데이터를 넣는 함수는 array_splice입니다.

array_splice는 하나의 데이터를 넣는 것보다는 배열을 두개 합치는 것과 같습니다.

링크 - https://www.php.net/manual/en/function.array-splice.php

<?php
  $title = "title";
  $type1 = array("Test", "Hello", "World");
  $type2 = array("push");
  // 배열을 합치는 것도 가능하고.
  array_splice($type1,2,0,$type2);
  // 그냥 문자열로도 입력이 가능하다.
  array_splice($type1,3,0,"push2");
  // 파라미터는 첫번째가 합치려는 배열, 두번째가 위치, 세번째가 삭제 배열 수, 마지막이 합치려는 데이터
  // 세번째 파라미터가 1이 들어가면 "World" 가 삭제되고 -1이 들어가면 "Hello"가 삭제된다.
?>
<!DOCTYPE html>
<html>
<head>
  <title>
    <?=$title?>
  </title>
</head>
<body>
  <?php
    foreach($type1 as $key => $value) {
      echo $key." => ".$value."<br />";
    }
  ?>
</body>
</html>

배열의 갯수의 결과는 count를 사용하면 됩니다.

링크 - https://www.php.net/manual/en/function.count.php

<?php
  $title = "title";
  $type1 = array("Test", "Hello", "World");
?>
<!DOCTYPE html>
<html>
<head>
  <title>
    <?=$title?>
  </title>
</head>
<body>
  <?php
    for($i=0; $i<count($type1); $i++){
      echo $type1[$i]."<br />";
    }
  ?>
</body>
</html>

그 밖에 sort함수, extract함수, array_walk함수가 있습니다만, sort는 말그대로 정렬를 하지만 숫자만 해당되기 때문에, 실무에서는 아마 Sort 알고리즘을 만들어야 할 것입니다.

링크 - https://www.php.net/manual/en/function.sort.php

링크 - https://www.php.net/manual/en/function.extract.php

링크 - https://www.php.net/manual/en/function.array-walk.php


여기까지 PHP의 배열과 List에 대한 설명이었습니다.


궁금한 점이나 잘못된 점이 있으면 댓글 부탁드립니다.