๋šœ๋ถ€๋‹ˆ์˜ Devlog

[PHP] ๊ธฐ๋ณธ ๋ฌธ๋ฒ• ์ •๋ฆฌ (3) (feat. ๋ฐฐ์—ด)

by ๋šœ๋ถ€๋‹ˆ

PHP

๋ฐฐ์—ด

๋ฐฐ์—ด์€ ํ•œ ์Œ์˜ ํ‚ค(key)์™€ ๊ฐ’(value)์œผ๋กœ ์ด๋ฃจ์–ด์ง„ ๋งต(map)์œผ๋กœ ๊ตฌ์„ฑ๋œ ์ˆœ์„œ๊ฐ€ ์žˆ๋Š” ์ง‘ํ•ฉ์ž…๋‹ˆ๋‹ค.

๋ฐฐ์—ด์€ ์ฃผ๋กœ ์—ฐ๊ด€๋œ ๋ฐ์ดํ„ฐ๋ฅผ ๋ชจ์•„์„œ ๊ด€๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉํ•˜๋Š” ๋ฐ์ดํ„ฐ ํƒ€์ž…์ž…๋‹ˆ๋‹ค.

PHP์—์„œ์˜ ๋ฐฐ์—ด์€ ๋‹ค์€ ์–ธ์–ด์—์„œ ๋ฆฌ์ŠคํŠธ๋ผ๊ณ ๋„ ํ•˜๋Š” ํ˜•ํƒœ์ž…๋‹ˆ๋‹ค! ๐Ÿ˜Ž๐Ÿ˜Ž

1. 1์ฐจ์› ๋ฐฐ์—ด

1.1. ๋ฐฐ์—ด ์ƒ์„ฑ ๋ฐ ์š”์†Œ ์ถ”๊ฐ€

๋ฐฐ์—ด์„ ์ƒ์„ฑํ•  ๋•Œ๋Š” array()๋ผ๋Š” ํ•จ์ˆ˜๋ฅผ ์ด์šฉํ•˜๋ฉฐ, ๋ฐฐ์—ด ์ด๋ฆ„์€ ๋ฐฐ์—ด์„ ์„ ์–ธํ•œ ํ›„ ํ•ด๋‹น ๋ฐฐ์—ด์— ์ ‘๊ทผํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

$๋ฐฐ์—ด์ด๋ฆ„ = array();

๋ฐฐ์—ด์˜ ์š”์†Œ์— ์ ‘๊ทผํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ์ธ๋ฑ์Šค(index)๋ฅผ ์‚ฌ์šฉํ•˜๋Š”๋ฐ, 0๋ถ€ํ„ฐ ์‹œ์ž‘ํ•˜๋Š” ์ˆซ์ž ์ธ๋ฑ์Šค๋ฅผ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.

$๋ฐฐ์—ด์ด๋ฆ„[์ธ๋ฑ์Šค]

์ด ์ธ๋ฑ์Šค๋ฅผ ์ด์šฉํ•˜๋ฉด ๋ฐฐ์—ด์— ์š”์†Œ๋ฅผ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

<?php
$arr = array();
$arr[0] = "A";
$arr[1] = "B";
$arr[2] = "C";
var_dump($arr);
?>

์œ„์˜ ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•˜๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋ฐฐ์—ด์ด ์ƒ์„ฑ๋˜๊ณ , ํ•ด๋‹น ๋ฐฐ์—ด์— ์š”์†Œ๊ฐ€ ์ถ”๊ฐ€๋˜์—ˆ์Œ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด๋ ‡๊ฒŒ ๋‚˜๋ˆ ์„œ ์ƒ์„ฑํ•˜๊ณ  ์ถ”๊ฐ€ํ•ด๋„ ๋˜์ง€๋งŒ, ์ƒ์„ฑ๊ณผ ๋™์‹œ์— ๋ฐฐ์—ด ์š”์†Œ๋ฅผ ์ดˆ๊ธฐํ™”ํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

$๋ฐฐ์—ด์ด๋ฆ„ = array(๋ฐฐ์—ด์š”์†Œ1, ๋ฐฐ์—ด์š”์†Œ2, ...);

์œ„์˜ ์ฝ”๋“œ์™€ ๊ฐ™์€ ๊ฒฐ๊ณผ๊ฐ€ ๋‚˜์˜ค๋Š”์ง€ ์•„๋ž˜ ์ฝ”๋“œ๋ฅผ ์‹คํ–‰์‹œ์ผœ์„œ ํ™•์ธํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค!

<?php
$arr = array();
$arr[0] = "A";
$arr[1] = "B";
$arr[2] = "C";
var_dump($arr);
?>

์•„๋ž˜ ๊ฒฐ๊ณผ๋ฅผ ๋ณด๋ฉด ์‹คํ–‰ ๊ฒฐ๊ณผ๊ฐ€ ๋™์ผํ•จ์„ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ƒ์„ฑ๊ณผ ๋™์‹œ์— ์ดˆ๊ธฐํ™”๋ฅผ ํ•ด์•ผํ•œ๋‹ค๋ฉด ์ด๋ ‡๊ฒŒ ์“ฐ๋Š”๊ฒŒ ์ฝ”๋“œ ๊ธธ์ด๊ฐ€ ๋” ์ค„์–ด๋“ค๊ฒ ๋„ค์š” ๐Ÿ˜„๐Ÿ˜„

1.2. ๋ฐฐ์—ด์˜ ํ™€ (hole)

PHP์—์„œ๋Š” ๋ฐฐ์—ด์˜ ํŠน์ • ์ธ๋ฑ์Šค์—๋งŒ ๋ฐฐ์—ด ์š”์†Œ๋ฅผ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ฐฐ์—ด์„ ํ•˜๋‚˜ ์ƒ์„ฑํ•ด์„œ 10๋ฒˆ ์ธ๋ฑ์Šค์—๋งŒ ๋ฐฐ์—ด์˜ ์š”์†Œ๋ฅผ ์ถ”๊ฐ€ํ•˜๊ณ  ๋‚˜๋จธ์ง€๋Š” ๋นˆ ๋ฐฐ์—ด๋กœ ์œ ์ง€ํ•ด๋‘๋ฉด ์–ด๋–ป๊ฒŒ ๋ ๊นŒ์š”?

<?php
$arr = array();
$arr[10] = "hello";

var_dump($arr);
var_dump($arr[0]);
var_dump(isset($arr[0]));
var_dump(isset($arr[10]));
?>

์‹คํ–‰์‹œํ‚จ ๊ฒฐ๊ณผ, ์•„๋ž˜์™€ ๊ฐ™์ด ์ „์ฒด ๋ฐฐ์—ด ์ค‘ 10๋ฒˆ ์ธ๋ฑ์Šค์—๋งŒ ์š”์†Œ์ธ 'hello'๊ฐ€ ๋“ค์–ด์žˆ์Œ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ,

0๋ฒˆ ์ธ๋ฑ์Šค์—๋Š” ๊ธฐ๋ณธ๊ฐ’์ธ null์ด ๋“ค์–ด์žˆ์Œ์„ ํ™•์ธ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

isset() ํ•จ์ˆ˜๋Š” ์ธ์ˆ˜๋กœ ์ „๋‹ฌ๋ฐ›์€ ๋ณ€์ˆ˜๊ฐ€ ์ดˆ๊ธฐํ™”๋˜์–ด ์žˆ๋Š”์ง€ ํ™•์ธํ•ด์ฃผ๋Š”๋ฐ,

0๋ฒˆ ์ธ๋ฑ์Šค๋Š” ์ดˆ๊ธฐํ™”ํ•˜์ง€ ์•Š์•˜๊ธฐ ๋•Œ๋ฌธ์— false, 10๋ฒˆ ์ธ๋ฑ์Šค๋Š” 'hello'๋กœ ์ดˆ๊ธฐํ™”ํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— true๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

์ด๋ ‡๋“ฏ PHP์—์„œ๋Š” ๋นˆ ๋ฐฐ์—ด์˜ ์ผ๋ถ€ ๊ฐ’๋งŒ ์ฑ„์šธ ์ˆ˜ ์žˆ์œผ๋ฉฐ, ๋ฐฐ์—ด ์š”์†Œ๊ฐ€ ์—†๋Š” ๋ถ€๋ถ„์„ ๋ฐฐ์—ด์˜ ํ™€(hole)์ด๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

PHP์—์„œ๋Š” ์ด๋Ÿฌํ•œ ๋ฐฐ์—ด์˜ ํ™€์„ ์ฐธ์กฐํ•˜๊ฒŒ ๋˜๋ฉด, ์ดˆ๊ธฐํ™”๋˜์ง€ ์•Š์€ ๋ณ€์ˆ˜๋ฅผ ์ฐธ์กฐํ•  ๋•Œ์ฒ˜๋Ÿผ ๊ธฐ๋ณธ๊ฐ’์ธ null์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

1.3. ๋ฐฐ์—ด๊ณผ ๋ฐ˜๋ณต๋ฌธ

๋ฐฐ์—ด์— ์žˆ๋Š” ์ •๋ณด๋ฅผ ํ•˜๋‚˜์”ฉ ๊บผ๋‚ด์„œ ์ฒ˜๋ฆฌํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด ๋ฐ˜๋ณต๋ฌธ์„ ์‚ฌ์šฉํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.

<?php
$arr = array("A", "B", "C");
for ($i=0; $i<count($arr); $i++) {
    echo $arr[$i]."<br/>";
}
?>

์œ„์˜ ์ฝ”๋“œ์—์„œ count()๋Š” ๋ฐฐ์—ด์˜ ๋ชจ๋“  ์š”์†Œ์˜ ๊ฐœ์ˆ˜๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋Š” ํ•จ์ˆ˜์ž…๋‹ˆ๋‹ค.

๋ฐฐ์—ด์— 3๊ฐœ์˜ ์š”์†Œ๊ฐ€ ์กด์žฌํ•˜๋ฏ€๋กœ count($arr)์€ 3์ด๊ฒ ๋„ค์š”! ๐Ÿ˜„๐Ÿ˜„

๊ทธ๋ ‡๋‹ค๋ฉด ๋งŒ์•ฝ ๋ฐฐ์—ด์˜ ์ผ๋ถ€ ์š”์†Œ๋งŒ ์ฑ„์›Œ์ ธ์žˆ๋‹ค๋ฉด ์–ด๋–ป๊ฒŒ ๋ ๊นŒ์š”? ๐Ÿค”๐Ÿค”

<?php
$arr = array();
$arr[2] = "A";
$arr[3] = "B";
$arr[4] = "C";
for ($i=0; $i<count($arr); $i++) {
    echo $arr[$i]."<br/>";
}
?>

์ฝ”๋“œ๋ฅผ ์‹คํ–‰์‹œํ‚จ ๊ฒฐ๊ณผ, A๋งŒ ์ถœ๋ ฅ๋˜๋Š” ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์•„์‰ฝ๊ฒŒ๋„ count()๋Š” ์ „์ฒด ๊ธธ์ด๊ฐ€ ์•„๋‹Œ ๋ฐฐ์—ด์˜ ์š”์†Œ์— ๋Œ€ํ•œ ์ˆ˜๋ฅผ ๋ฐ˜ํ™˜ํ•˜๊ธฐ ๋•Œ๋ฌธ์—

3๋ฒˆ์˜ ๋ฐ˜๋ณต๋ฌธ ์ˆ˜ํ–‰์œผ๋กœ 0, 1, 2๋ฒˆ ์ธ๋ฑ์Šค์— ๋Œ€ํ•ด์„œ๋งŒ ์ ‘๊ทผ์„ ํ–ˆ์Šต๋‹ˆ๋‹ค. ๐Ÿ˜…๐Ÿ˜…

๊ทธ๋ ‡๋‹ค๋ฉด ์š”์†Œ์—๋งŒ ์ ‘๊ทผํ•˜์—ฌ ์ถœ๋ ฅํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ์—†์„๊นŒ์š”?!

์žˆ์Šต๋‹ˆ๋‹ค!! foreach๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋ฐฐ์—ด์˜ ๋ชจ๋“  ์š”์†Œ์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ์–ด์š”!

<?php
$arr = array();
$arr[2] = "A";
$arr[3] = "B";
$arr[4] = "C";
foreach ($arr as $element) {
    echo $element."<br/>";
}
?>

๋‹ค์Œ ์ฝ”๋“œ๋ฅผ ์ˆ˜ํ–‰์‹œํ‚ค๋ฉฐ ์•„๋ž˜์™€ ๊ฐ™์ด A, B, C๊ฐ€ ์ถœ๋ ฅ๋œ ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ฐฐ์—ด์— ๋นˆ ์š”์†Œ๊ฐ€ ์žˆ๋‹ค๋ฉด, foreach๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ๋” ์ข‹์„ ๊ฒƒ ๊ฐ™๋„ค์š”..! ๐Ÿ˜Š๐Ÿ˜Š

1.4. ๋ฐฐ์—ด์˜ ์กฐ์ž‘

์ด์ „์—๋„ ์–ธ๊ธ‰ํ–ˆ๋“ฏ PHP ๋ฐฐ์—ด์€ ๋‹ค๋ฅธ ์–ธ์–ด์—์„œ ๋ฆฌ์ŠคํŠธ ํ˜•ํƒœ์˜ ๋ฐ์ดํ„ฐ ํƒ€์ž…์ด๊ธฐ ๋•Œ๋ฌธ์—

๋ฐฐ์—ด์— ์š”์†Œ๋ฅผ ์ถ”๊ฐ€ํ•˜๊ฑฐ๋‚˜ ์‚ญ์ œํ•˜๋Š” ๊ฒƒ์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ, ์ •๋ ฌ๊ณผ ์—ญ์ˆœ ์ •๋ ฌ๋„ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

์–ด๋–ป๊ฒŒ ์“ฐ๋Š”์ง€ ์ฝ”๋“œ๋กœ ํ™•์ธํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค!

<?php
// ๋ฐฐ์—ด ์ดˆ๊ธฐํ™”
$arr = array("A", "B", "C");
for ($i = 0; $i < count($arr); $i++)
    echo $arr[$i];
echo "<br />";
// ๋ฐฐ์—ด์˜ ๋งจ ๋์— ์š”์†Œ ์ถ”๊ฐ€
array_push($arr, "D");
for ($i = 0; $i < count($arr); $i++)
    echo $arr[$i];
echo "<br />";
// ๋ฐฐ์—ด์˜ ๋งจ ๋์— ๋ณต์ˆ˜ ์š”์†Œ ์ถ”๊ฐ€ (๋ฐฐ์—ด ๊ฒฐํ•ฉ ๋Š๋‚Œ)
$arr = array_merge($arr, ["E", "F"]);
for ($i = 0; $i < count($arr); $i++)
    echo $arr[$i];
echo "<br />";
// ๋ฐฐ์—ด์˜ ๋งจ ์•ž์— ์š”์†Œ ์ถ”๊ฐ€
array_unshift($arr, "G");
for ($i = 0; $i < count($arr); $i++)
    echo $arr[$i];
echo "<br />";
// ๋ฐฐ์—ด์˜ ํŠน์ • ์œ„์น˜์— ์š”์†Œ ์ถ”๊ฐ€.
// ์—ฌ๊ธฐ์„œ๋Š” 2๋ฒˆ ์ธ๋ฑ์Šค์— ์š”์†Œ๋ฅผ ์ถ”๊ฐ€ํ•˜๋ฉฐ, ๊ธฐ์กด์˜ ์š”์†Œ๋“ค์„ ํ•œ ์นธ์”ฉ ๋ฐ€์–ด๋ƒ„
array_splice($arr, 2, 0, "H");
for ($i = 0; $i < count($arr); $i++)
    echo $arr[$i];
echo "<br />";
// ๋งŒ์•ฝ ๊ธฐ์กด์˜ 2๋ฒˆ ์š”์†Œ๋ถ€ํ„ฐ ๊ธธ์ด 4๊นŒ์ง€๋ฅผ ์ œ๊ฑฐํ•˜๊ณ  ๋‚œ ํ›„,
// 2๋ฒˆ ์ธ๋ฑ์Šค์— ์ถ”๊ฐ€ํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์“ฐ๋ฉด ๋จ
array_splice($arr, 2, 4, "I");
for ($i = 0; $i < count($arr); $i++)
    echo $arr[$i];
echo "<br />";
// ๋ฐฐ์—ด์˜ ๋งจ ์•ž ์š”์†Œ ์ œ๊ฑฐ
array_shift($arr);
for ($i = 0; $i < count($arr); $i++)
    echo $arr[$i];
echo "<br />";
// ๋ฐฐ์—ด์˜ ๋งจ ๋’ค ์š”์†Œ ์ œ๊ฑฐ
array_pop($arr);
for ($i = 0; $i < count($arr); $i++)
    echo $arr[$i];
echo "<br />";
// ์ •๋ ฌ
sort($arr);
for ($i = 0; $i < count($arr); $i++)
    echo $arr[$i];
echo "<br />";
// ์—ญ์ˆœ ์ •๋ ฌ
rsort($arr);
for ($i = 0; $i < count($arr); $i++)
    echo $arr[$i];
echo "<br />";
?>

์ฝ”๋“œ๋ฅผ ์ˆ˜ํ–‰์‹œํ‚จ ๊ฒฐ๊ณผ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์–ด๋–ค ๋Š๋‚Œ์ธ์ง€ ์•„์‹œ๊ฒ ์ฃ ?!

ํ˜น์‹œ ๋ชฐ๋ผ ์“ฐ๋Š” ๋ฐฉ์‹์— ๋Œ€ํ•ด ํ•œ ๋ฒˆ ๋” ์ •๋ฆฌํ•ด๋ณด์•˜์Šต๋‹ˆ๋‹ค!

๋ฐฐ์—ด์˜ ๋งจ ๋์— ์š”์†Œ ์ถ”๊ฐ€

array_push($๋ฐฐ์—ด์ด๋ฆ„, ๋ฐฐ์—ด์š”์†Œ);

๋ฐฐ์—ด์˜ ๋งจ ๋์— ๋ณต์ˆ˜ ์š”์†Œ ์ถ”๊ฐ€

$๋ฐฐ์—ด์ด๋ฆ„ = array_merge($๋ฐฐ์—ด์ด๋ฆ„, [๋ฐฐ์—ด์š”์†Œ1, ๋ฐฐ์—ด์š”์†Œ2]);

๋ฐฐ์—ด์˜ ๋งจ ์•ž์— ์š”์†Œ ์ถ”๊ฐ€

array_unshift($๋ฐฐ์—ด์ด๋ฆ„, ๋ฐฐ์—ด์š”์†Œ);

๋ฐฐ์—ด์˜ ํŠน์ • ์ธ๋ฑ์Šค์— ์š”์†Œ ์ถ”๊ฐ€

array_splice($๋ฐฐ์—ด์ด๋ฆ„, ์ธ๋ฑ์Šค๋ฒˆํ˜ธ, 0, ๋ฐฐ์—ด์š”์†Œ);

๋ฐฐ์—ด์˜ ํŠน์ • ์ธ๋ฑ์Šค ๊ธฐ์ค€์œผ๋กœ ํŠน์ • ๊ธธ์ด ์ œ๊ฑฐ ํ›„ ์š”์†Œ ์ถ”๊ฐ€

array_splice($๋ฐฐ์—ด์ด๋ฆ„, ์ธ๋ฑ์Šค๋ฒˆํ˜ธ, ์ œ๊ฑฐํ• ๊ธธ์ด, ๋ฐฐ์—ด์š”์†Œ);

๋ฐฐ์—ด์˜ ๋งจ ์•ž ์š”์†Œ ์ œ๊ฑฐ

array_shift($๋ฐฐ์—ด์ด๋ฆ„);

๋ฐฐ์—ด์˜ ๋งจ ๋’ค ์š”์†Œ ์ œ๊ฑฐ

array_pop($๋ฐฐ์—ด์ด๋ฆ„);

์ •๋ ฌ

sort($๋ฐฐ์—ด์ด๋ฆ„);

์—ญ์ˆœ์ •๋ ฌ

rsort($๋ฐฐ์—ด์ด๋ฆ„);

2. ๋‹ค์ฐจ์› ๋ฐฐ์—ด

๋‹ค์ฐจ์› ๋ฐฐ์—ด์€ 2์ฐจ์› ์ด์ƒ์˜ ๋ฐฐ์—ด์„ ์˜๋ฏธํ•˜๋ฉฐ, ๋ฐฐ์—ด ์š”์†Œ๋กœ ๋˜ ๋‹ค๋ฅธ ๋ฐฐ์—ด์„ ์‚ฌ์šฉํ•˜๋Š” ํ˜•ํƒœ์ž…๋‹ˆ๋‹ค.

2.1. 2์ฐจ์› ๋ฐฐ์—ด

2์ฐจ์› ๋ฐฐ์—ด์ด๋ž€ ๋ฐฐ์—ด ์š”์†Œ๋กœ ๋˜ ๋‹ค๋ฅธ 1์ฐจ์› ๋ฐฐ์—ด์„ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฐ์—ด์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.2์ฐจ์› ๋ฐฐ์—ด์€ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋ฌธ๋ฒ•์— ๋”ฐ๋ผ ์„ ์–ธ๋ฉ๋‹ˆ๋‹ค.

$๋ฐฐ์—ด์ด๋ฆ„ = array(
    array(),
    array(),
    ....
);

2.2. 2์ฐจ์› ๋ฐฐ์—ด ์š”์†Œ ์ž…๋ ฅ

2์ฐจ์› ๋ฐฐ์—ด๋„ 1์ฐจ์› ๋ฐฐ์—ด๊ณผ ๋™์ผํ•˜๊ฒŒ ์š”์†Œ์— ์ ‘๊ทผํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ์ธ๋ฑ์Šค๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

2์ฐจ์› ๋ฐฐ์—ด์— ์†ํ•œ ์š”์†Œ์— ์ ‘๊ทผํ•  ๋•Œ์—๋Š” [] ์—ฐ์‚ฐ์ž๋ฅผ ๋‘ ๋ฒˆ ์‚ฌ์šฉํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.

<?php
// 1์ฐจ์› ๋ฐฐ์—ด์„ 3๊ฐœ ๊ฐ–๋Š” 2์ฐจ์› ๋ฐฐ์—ด ์„ ์–ธ
$arr = array(
    array(),
    array(),
    array()
);

// ๋ฐฐ์—ด์˜ ์š”์†Œ ์ถ”๊ฐ€
$arr[0][0] = "A";
$arr[0][1] = "B";
$arr[0][2] = 100;

$arr[1][0] = "C";
$arr[1][1] = 200;
$arr[1][2] = "E";

$arr[2][0] = false;
$arr[2][1] = 0.03;
$arr[2][2] = true;

var_dump($arr);
echo $arr[0][0]." ".$arr[0][1]." ".$arr[0][2]."<br/>";
echo $arr[1][0]." ".$arr[1][1]." ".$arr[1][2]."<br/>";
echo $arr[2][0]." ".$arr[2][1]." ".$arr[2][2]."<br/>";
?>

PHP๋Š” ์‹ ๊ธฐํ•˜๊ฒŒ๋„ ์„œ๋กœ ๋‹ค๋ฅธ ํ˜•์ด ์ €์žฅ๋˜๋Š” ํ˜•ํƒœ๋”๋ผ๊ตฌ์š”?! ๐Ÿคซ๐Ÿคซ

๋ณดํ†ต ๋‹ค๋ฅธ ์–ธ์–ด์—์„œ๋Š” ๋ฐฐ์—ด์— ๊ฐ™์€ ํ˜•๋งŒ ์ €์žฅ๋˜์–ด์„œ ์กฐ๊ธˆ ๋†€๋žฌ์–ด์š”. ์ด๋Ÿฐ ์‹ ๊ธฐํ•œ ์–ธ์–ด๊ฐ€ ์žˆ๋‹ค๋‹ˆ..!! ๐Ÿ˜ฎ๐Ÿ˜ฎ

์ธ๋ฑ์Šค์— ์ ‘๊ทผํ•ด์„œ ์ถœ๋ ฅํ•ด๋ณด๋‹ˆ false๋Š” ์•„๋ฌด๋Ÿฐ ๊ฐ’๋„ ์ถœ๋ ฅ๋˜์ง€ ์•Š๊ณ , true๋Š” 1์ด ์ถœ๋ ฅ๋˜๋”๋ผ๊ตฌ์š”

์•Œ ์ˆ˜ ์—†๋Š” PHP์˜ ๋ฐฐ์—ด ๋ฐฉ์‹.......... ์กฐ๊ธˆ ์ถฉ๊ฒฉ์ ์ด์—ˆ์–ด์š”..... ๐Ÿ‘€.......

1์ฐจ์› ๋ฐฐ์—ด๊ณผ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ 2์ฐจ์› ๋ฐฐ์—ด๋„ ์„ ์–ธํ•˜๋ฉด์„œ ๋™์‹œ์— ๋ฐฐ์—ด ์š”์†Œ๋ฅผ ์ดˆ๊ธฐํ™”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

$๋ฐฐ์—ด์ด๋ฆ„ = array(
    array(๋ฐฐ์—ด์š”์†Œ00, ๋ฐฐ์—ด์š”์†Œ01, ...),
    array(๋ฐฐ์—ด์š”์†Œ10, ๋ฐฐ์—ด์š”์†Œ11, ...),
    ...
);

2.3. 2์ฐจ์› ๋ฐฐ์—ด๊ณผ ๋ฐ˜๋ณต๋ฌธ

for๋ฌธ์— ๋ฐฐ์—ด์˜ ์ธ๋ฑ์Šค๋ฅผ ์ด์šฉํ•˜์—ฌ ๋ฐฐ์—ด ์š”์†Œ์— ์ ‘๊ทผํ•˜๋Š” ๊ฒƒ๋„ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค!

๋‹ค๋งŒ, 1์ฐจ์› ๋ฐฐ์—ด๊ณผ ๋‹ฌ๋ฆฌ ํ–‰๊ณผ ์—ด์— ๋Œ€ํ•ด for๋ฌธ์„ 2๋ฒˆ ์‚ฌ์šฉํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค.

<?php
// 1์ฐจ์› ๋ฐฐ์—ด์„ 3๊ฐœ ๊ฐ–๋Š” 2์ฐจ์› ๋ฐฐ์—ด ์„ ์–ธ
$arr = array(
    array(1, 2, 3),
    array(4, 5, 6),
    array(7, 8, 9)
);

for($row = 0; $row < count($arr); $row++){
    for($column = 0; $column < count($arr[$row]); $column++){
        echo $arr[$row][$column]." ";
    }
}

?>
Comment

์ฝ”๋“œ ์‹คํ–‰ ๊ฒฐ๊ณผ๋ฅผ ๋ณด๋ฉด ์ œ๋Œ€๋กœ ์ ‘๊ทผ๋˜๋Š” ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

2์ฐจ์› ๋ฐฐ์—ด๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ๋‹ค์ฐจ์› ๋ฐฐ์—ด์— ๋Œ€ํ•ด์„œ๋„ ์–ด๋–ป๊ฒŒ ํ•ด์•ผํ• ์ง€ ์•Œ๊ฒ ์ฃ ?! ๐Ÿ˜Š๐Ÿ˜Š

3. ์—ฐ๊ด€ ๋ฐฐ์—ด

PHP์—์„œ๋Š” ์ˆซ์ž๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ๋ฌธ์ž์—ด๋„ ๋ฐฐ์—ด ์š”์†Œ์˜ ์ธ๋ฑ์Šค๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋‹ค๋ฅธ ์–ธ์–ด์—์„œ Hash Map, Dictionary์™€ ๋น„์Šทํ•œ ๋Š๋‚Œ์ด์ฃ .... ์ด๋Ÿฐ ๊ฒƒ๋„ ๋˜๋„ค์š”..?! ๐Ÿ‘€......

๋งŒ์•ฝ ์ •์ˆ˜์™€ ๋ฌธ์ž์—ด ์ด์™ธ์— ๋‹ค๋ฅธ ํƒ€์ž…์˜ ๊ฐ’์„ ํ‚ค ๊ฐ’์œผ๋กœ ์‚ฌ์šฉํ•˜๋ฉด,

๋‚ด๋ถ€์ ์œผ๋กœ ์ •์ˆ˜์™€ ๋ฌธ์ž์—ด๋กœ ํƒ€์ž… ๋ณ€ํ™˜์ด ์ด๋ฃจ์–ด์ง‘๋‹ˆ๋‹ค.

์—ฐ๊ด€ ๋ฐฐ์—ด์„ ์ƒ์„ฑํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ์ •์ˆ˜๋ฅผ ์ธ๋ฑ์Šค๋กœ ํ•˜๋Š” ๋ฐฐ์—ด์„ ์ƒ์„ฑํ•˜๋Š” ๋ฐฉ๋ฒ•๊ณผ ๋™์ผํ•ฉ๋‹ˆ๋‹ค.

$๋ฐฐ์—ด์ด๋ฆ„ = array();

3.1. ์—ฐ๊ด€ ๋ฐฐ์—ด์˜ ์ฐธ์กฐ

์—ฐ๊ด€ ๋ฐฐ์—ด์˜ ๊ฐ ์š”์†Œ๋ฅผ ์ฐธ์กฐํ•˜๊ณ  ์‹ถ์„ ๋•Œ๋Š” ๋ฐฐ์—ด ์ด๋ฆ„๊ณผ ํ•จ๊ป˜ ํ‚ค(key)๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.

$๋ฐฐ์—ด์ด๋ฆ„["ํ‚ค"] = ๊ฐ’;

์„ ์–ธ๊ณผ ๋™์‹œ์— ๋ฐฐ์—ด ์š”์†Œ๋ฅผ ์ถ”๊ฐ€ํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด ๋‹ค์Œ ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.

$๋ฐฐ์—ด์ด๋ฆ„ = array("ํ‚ค1" => ๊ฐ’1, "ํ‚ค2" => ๊ฐ’2, ...);

์ด๋ฏธ ์ƒ์„ฑ๋œ ์—ฐ๊ด€ ๋ฐฐ์—ด์— ์ƒˆ๋กœ์šด ์š”์†Œ๋ฅผ ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒƒ๋„ ๊ฐ€๋Šฅํ•˜๋ฉฐ,

์กด์žฌํ•˜์ง€ ์•Š์€ ๋ฐฐ์—ด์ผ ๊ฒฝ์šฐ ์ƒˆ๋กœ์šด ๋ฐฐ์—ด์„ ๋งŒ๋“  ํ›„ ๋ฐฐ์—ด ์š”์†Œ๋ฅผ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค. ๋งค์šฐ ํŽธํ•œ ๊ตฌ์กฐ๋„ค์š”!

<?php
$arr = array("A" => 100, "B" => 20);
$arr["C"] = 2000;
var_dump($arr);
?>

์•„๋ž˜ ๊ฒฐ๊ณผ๋ฅผ ํ†ตํ•ด ์„ ์–ธ๊ณผ ๋™์‹œ์— ์š”์†Œ ์ถ”๊ฐ€ํ•œ ํ›„, ์ƒ์„ฑ๋œ ์—ฐ๊ด€ ๋ฐฐ์—ด์— ์ƒˆ๋กœ์šด ์š”์†Œ ์ถ”๊ฐ€๊ฐ€ ๋˜๋Š” ๊ฑธ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

3.2. ๋ฃจํ”„๋ฅผ ์ด์šฉํ•œ ์—ฐ๊ด€ ๋ฐฐ์—ด๋กœ์˜ ์ ‘๊ทผ

๊ทธ๋ ‡๋‹ค๋ฉด ์—ฐ๊ด€ ๋ฐฐ์—ด์€ ์–ด๋–ป๊ฒŒ ๋ชจ๋“  ๋ฐฐ์—ด ์š”์†Œ์— ์ ‘๊ทผํ• ๊นŒ์š”?

์ธ๋ฑ์Šค๊ฐ€ ์ˆซ์ž๊ฐ€ ์•„๋‹ˆ๋ฏ€๋กœ, for๋ฌธ์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐฐ์—ด ์š”์†Œ์— ์ ‘๊ทผ์€ ๋ถˆ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

๋Œ€์‹  foreach๋ฌธ์ด๋‚˜ each() ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ ‘๊ทผํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

<?php
$arr = array("A" => 100, "B" => 20, "C" => 30);

echo "foreach ์‚ฌ์šฉ<br />";
foreach ($arr as $key => $value) {
    echo $key."=>".$value."<br />";
}
echo "<br />";
echo "each ์‚ฌ์šฉ<br />";
while($element = each($arr)) {
    echo $element["key"]."=>".$element["value"]."<br />";
}
?>

์‹คํ–‰ ๊ฒฐ๊ณผ๋ฅผ ํ™•์ธํ•ด๋ณด๋ฉด ๋ฐฐ์—ด ์š”์†Œ์— ์ ‘๊ทผํ•˜๋Š” ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ์ฃ ?! ๐Ÿ˜Š๐Ÿ˜Š

๊ธธ์—ˆ๋˜ ๋ฐฐ์—ด์— ๋Œ€ํ•œ ์„ค๋ช…์ด ๋๋‚ฌ์Šต๋‹ˆ๋‹ค..! ๐Ÿ˜‚๐Ÿ˜‚

 


๐Ÿ”—Reference

 

๋ธ”๋กœ๊ทธ์˜ ์ •๋ณด

๋šœ๋ถ€๋‹ˆ์˜ Devlog

๋šœ๋ถ€๋‹ˆ

ํ™œ๋™ํ•˜๊ธฐ