본문 바로가기
Language/php

[PHP] PHP 배열과 json_encode( ) (1)

by pin9___9 2023. 1. 26.
728x90

서론

PHP의 배열은 이전까지 공부해왔던 JS의 배열과 비교해봤을때 배열이 좀 달랐습니다.

 

DB에 ["1","2","3"] 이런 형태의 값을 넣어줘야 하는데 JS처럼 쉽게 생각해서 빈 배열을 만들고 push를 하는 방식을 사용하려 하니까 error가 발생했습니다. 

 

그래서 PHP의 배열을 공부했고 정리를 해보려 합니다.

 

PHP의 배열

- PHP의 배열은 기본적으로 array()를 사용하여 배열을 선언하지만 php5.4 이상의 버전에서는 대괄호를 사용해서 배열을 선언할 수 있습니다.

<?php
$varArr = array("one", "two", "tree");
$varArr2 = ["one", "two", "tree"];	// php5.4 이상 [] 대괄호를 이용한 배열 선언
?>

 

PHP 배열 종류

  • 숫자 인덱스 배열(Indexed arrays)
  • 연관 배열(Associative arrays)
  • 다차원 배열(Multidimensional arrays)

1. 숫자 인덱스 배열 - Indexed Arrays

- 대부분의 프로그래밍 언어에서 지원하는 방식입니다.

// 방식 1
$names = array('kim', 'lee', 'park');
 
// 방식 2
$numbers1 = array(1, 2, 3, 4, 5);
$numbers2 = range(1, 10); // 1~10
$words = range('a', 'z'); // a~z
 
// 방식 3
$products[0] = 'Tires'; // $products가 미리 정의되어 있지 않아도 된다.
$products[1] = 'Oil';
$products[2] = 'Spark Plugs';

 

2. 연관 배열 - Associative Arrays

- 현대 프로그래밍 언어들은 연관 배열을 지원하는 경우도 흔히 볼 수 있습니다.
- 연관 배열은 인덱스를 문자열로 사용하여 그 값에 의미를 붙여 사용하는 방식입니다.

// 방식 1
$prices = array(
    'Tires'=>100,
    'Oil'= 10,
    'Spark'=>4
);
 
// 방식 2
$prices['Tires'] = 100;
$prices['Oil'] = 10;
$prices['Spark Plugs'] = 4;

 

3. 다차원 배열 -Multidimensional Arrays

- 하나 이상의 배열을 포함하는 배열입니다.

$cars = array(
	array("Volvo",22,18),
	array("BMW",15,13),
	array("Saab",5,2),
	array("Land Rover",17,15)
 );

 

PHP 배열 출력 방법

  • print_r
  • var_dump

print_r / var_dump의 정의

 print_r 은 배열의 키와 그에 해당하는 값을 출력하는 출력문이며,
 var_dump 는 배열의 키와 그에 해당하는 값뿐만 아니라 속성까지 표시하는 출력문입니다.

 

print_r / var_dump 사용 방법

- print_r

print_r([배열명]);

 

- var_dump

var_dump([배열명]);

 

대괄호([ ]) 안에 쌍따옴표 (" ")

본격적으로 DB에 ["1","2","3"] 의 형태로 넣는 방법을 고민하고 해결한 방법을 정리해보겠습니다.

 

첫 번째 시도.

<?php
$cars = array("Volvo", "BMW", "Toyota");

$cars = "['$cars[0]','$cars[1]','$cars[2]']";
echo $cars
?>

//['Volvo','BMW','Toyota']

❌ 이 방법을 사용할 시 대괄호 안에 작은 따옴표가 들어가게 됩니다.

 

두 번째 시도.

<?php
$cars = array("Volvo", "BMW", "Toyota");

$cars = "["$cars[0]","$cars[1]","$cars[2]"]";
echo $cars
?>

//PHP Parse error: syntax error, unexpected '$cars' (T_VARIABLE) in /home/G1cXSn/prog.php on line 4

❌ 단순하게 생각해서 쌍 따옴표 안에 쌍 따옴표를 넣어봤는데 쌍 따옴표가 묶여있는 문자는 " [ ", " , " , " ] " 였습니다...

 

해결 방법.

<?php
$cars = array("Volvo", "BMW", "Toyota");

$cars = json_encode($cars);
echo $cars
?>

//["Volvo","BMW","Toyota"]

⭕ 위 코드처럼 json_encode 함수를 사용하면 해결이 됩니다.

 

마치며.

오늘은 PHP의 배열까지만 정리를 하고 내일 json_encode()와 json_decode()를 정리해 보겠습니다!!

 

728x90

댓글