[PHP] ๊ธฐ๋ณธ ๋ฌธ๋ฒ ์ ๋ฆฌ (2) (feat. ์ฐ์ฐ์, ์ ์ด๋ฌธ)
by ๋๋ถ๋1. ์ฐ์ฐ์
์ฐ์ฐ์๋ ๊ฐ์ ๋ํด์ ์ด๋ค ์์ ์ ์ปดํจํฐ์๊ฒ ์ง์ํ๊ธฐ ์ํ ๊ธฐํธ์ ๋๋ค.
1.1. ์ฐ์ ์ฐ์ฐ์
์ฌ์น ์ฐ์ฐ์ ๋ค๋ฃจ๋ ๊ฐ์ฅ ๊ธฐ๋ณธ์ ์ธ ์ฐ์ฐ์
์ฐ์ ์ฐ์ฐ์ | ์ค๋ช |
+ | ์ผ์ชฝ์ ํผ์ฐ์ฐ์์๊ฒ ์ค๋ฅธ์ชฝ์ ํผ์ฐ์ฐ์๋ฅผ ๋ํจ. |
- | ์ผ์ชฝ์ ํผ์ฐ์ฐ์์๊ฒ ์ค๋ฅธ์ชฝ์ ํผ์ฐ์ฐ์๋ฅผ ๋บ. |
* | ์ผ์ชฝ์ ํผ์ฐ์ฐ์์๊ฒ ์ค๋ฅธ์ชฝ์ ํผ์ฐ์ฐ์๋ฅผ ๊ณฑํจ. |
/ | ์ผ์ชฝ์ ํผ์ฐ์ฐ์์๊ฒ ์ค๋ฅธ์ชฝ์ ํผ์ฐ์ฐ์๋ก ๋๋. |
% | ์ผ์ชฝ์ ํผ์ฐ์ฐ์์๊ฒ ์ค๋ฅธ์ชฝ์ ํผ์ฐ์ฐ์๋ก ๋๋ ํ, ๊ทธ ๋๋จธ์ง๋ฅผ ๋ฐํํจ. |
** | ์ผ์ชฝ ํผ์ฐ์ฐ์์ ๊ฐ์ ์ค๋ฅธ์ชฝ ํผ์ฐ์ฐ์์ ๊ฐ์ ์ ๊ณฑํจ. |
์ฝ๋๋ ๋ค์๊ณผ ๊ฐ์ ํํ๋ก ์์ฑํฉ๋๋ค.
<?php
$num_01 = 10;
$num_02 = 4;
echo "10 + 4 = ".($num_01 + $num_02)."<br />"; // 14
echo "10 - 4 = ".($num_01 - $num_02)."<br />"; // 6
echo "10 * 4 = ".($num_01 * $num_02)."<br />"; // 40
echo "10 / 4 = ".($num_01 / $num_02)."<br />"; // 2.5
echo "10 % 4 = ".($num_01 % $num_02)."<br />"; // 2
echo "10 ** 4 = ".($num_01 ** $num_02)."<br />"; // 10000
?>
1.2. ๋์ ์ฐ์ฐ์
1.2.1. ๋์ ์ฐ์ฐ์
๋ณ์์ ๊ฐ์ ๋์ ํ ๋ ์ฌ์ฉํ๋ ์ดํญ ์ฐ์ฐ์์ด๋ฉฐ, ํผ์ฐ์ฐ์๋ค์ ๊ฒฐํฉ ๋ฐฉํฅ์ ์ค๋ฅธ์ชฝ์์ ์ผ์ชฝ์ ๋๋ค.
๋์ ์ฐ์ฐ์ | ์ค๋ช |
= | ์ผ์ชฝ์ ํผ์ฐ์ฐ์์ ์ค๋ฅธ์ชฝ์ ํผ์ฐ์ฐ์๋ฅผ ๋์ ํจ. |
1.2.3. ๋ณตํฉ ๋์ ์ฐ์ฐ์
๋์ ์ฐ์ฐ์์ ์ฐ์ ์ฐ์ฐ์ ๋ฑ์ ๊ฒฐํฉํ ํํ์ด๋ฉฐ, ํผ์ฐ์ฐ์๋ค์ ๊ฒฐํฉ ๋ฐฉํฅ์ ์ค๋ฅธ์ชฝ์์ ์ผ์ชฝ์ ๋๋ค.
๋ณตํฉ ๋์ ์ฐ์ฐ์ | ์ค๋ช |
+= | ์ผ์ชฝ์ ํผ์ฐ์ฐ์์๊ฒ ์ค๋ฅธ์ชฝ์ ํผ์ฐ์ฐ์๋ฅผ ๋ํ ํ, ์ผ์ชฝ์ ํผ์ฐ์ฐ์์ ๋์ ํจ. |
-= | ์ผ์ชฝ์ ํผ์ฐ์ฐ์์๊ฒ ์ค๋ฅธ์ชฝ์ ํผ์ฐ์ฐ์๋ฅผ ๋บ ํ, ์ผ์ชฝ์ ํผ์ฐ์ฐ์์ ๋์ ํจ. |
*= | ์ผ์ชฝ์ ํผ์ฐ์ฐ์์๊ฒ ์ค๋ฅธ์ชฝ์ ํผ์ฐ์ฐ์๋ฅผ ๊ณฑํ ํ, ์ผ์ชฝ์ ํผ์ฐ์ฐ์์ ๋์ ํจ. |
/= | ์ผ์ชฝ์ ํผ์ฐ์ฐ์์๊ฒ ์ค๋ฅธ์ชฝ์ ํผ์ฐ์ฐ์๋ก ๋๋ ํ, ์ผ์ชฝ์ ํผ์ฐ์ฐ์์ ๋์ ํจ. |
%= | ์ผ์ชฝ์ ํผ์ฐ์ฐ์์๊ฒ ์ค๋ฅธ์ชฝ์ ํผ์ฐ์ฐ์๋ก ๋๋ ํ, ๊ทธ ๋๋จธ์ง๋ฅผ ์ผ์ชฝ์ ํผ์ฐ์ฐ์์ ๋์ ํจ. |
.= | ์ผ์ชฝ ํผ์ฐ์ฐ์์ ๋ฌธ์์ด์ ์ค๋ฅธ์ชฝ ํผ์ฐ์ฐ์์ ๋ฌธ์์ด์ ์ถ๊ฐํ ํ, ์ผ์ชฝ์ ํผ์ฐ์ฐ์์ ๋์ ํจ. |
<<= | ์ผ์ชฝ์ ํผ์ฐ์ฐ์์ ๋นํธ๋ฅผ ์ค๋ฅธ์ชฝ์ ํผ์ฐ์ฐ์๋งํผ ์ ๋ถ์ผ์ชฝ์ผ๋ก ์ด๋์ํจ ํ, ๊ทธ ๊ฒฐ๊ณผ๋ฅผ ์ผ์ชฝ์ ํผ์ฐ์ฐ์์ ๋์ ํจ. |
>>= | ์ผ์ชฝ์ ํผ์ฐ์ฐ์์ ๋นํธ์ ๋ถํธ๋ฅผ ์ ์งํ๋ฉด์ ์ค๋ฅธ์ชฝ์ ํผ์ฐ์ฐ์๋งํผ ์ ๋ถ ์ค๋ฅธ์ชฝ์ผ๋ก ์ด๋์ํจ ํ, ๊ทธ ๊ฒฐ๊ณผ๋ฅผ ์ผ์ชฝ์ ํผ์ฐ์ฐ์์ ๋์ ํจ. |
&= | ์ผ์ชฝ ํผ์ฐ์ฐ์์ ๋ ผ๋ฆฌ์๊ณผ ์ค๋ฅธ์ชฝ ํผ์ฐ์ฐ์์ ๋ ผ๋ฆฌ์์ด ๋ชจ๋ true์ด๋ฉด ์ผ์ชฝ์ ํผ์ฐ์ฐ์์ true๋ฅผ ๋์ ํ๊ณ , ๊ทธ ์ธ์๋ false๋ฅผ ๋์ ํจ. |
!= | ์ผ์ชฝ ํผ์ฐ์ฐ์์ ๋ ผ๋ฆฌ์์ด๋ ์ค๋ฅธ์ชฝ ํผ์ฐ์ฐ์์ ๋ ผ๋ฆฌ์์ด ์ค ํ๋๋ผ๋ true์ด๋ฉด ์ผ์ชฝ์ ํผ์ฐ์ฐ์์ true๋ฅผ ๋์ ํ๊ณ , ๊ทธ ์ธ์๋ false๋ฅผ ๋์ ํจ. |
^= | ์ผ์ชฝ ํผ์ฐ์ฐ์์ ๋ ผ๋ฆฌ์๊ณผ ์ค๋ฅธ์ชฝ ํผ์ฐ์ฐ์์ ๋ ผ๋ฆฌ์์ด ์๋ก ๋ค๋ฅด๋ฉด ์ผ์ชฝ์ ํผ์ฐ์ฐ์์ true๋ฅผ ๋์ ํ๊ณ , ๊ทธ ์ธ์๋ false๋ฅผ ๋์ ํจ. |
1.3. ์ฆ๊ฐ ์ฐ์ฐ์
ํผ์ฐ์ฐ์๋ฅผ 1์ฉ ์ฆ๊ฐ ํน์ ๊ฐ์์ํฌ ๋ ์ฌ์ฉํ๋ ์ฐ์ฐ์์ ๋๋ค.
์ฆ๊ฐ ์ฐ์ฐ์ | ์ค๋ช |
++$var | ๋จผ์ ํผ์ฐ์ฐ์์ ๊ฐ์ 1 ์ฆ๊ฐ์ํจ ํ์ ํด๋น ์ฐ์ฐ์ ์ํํจ. |
$var++ | ๋จผ์ ํด๋น ์ฐ์ฐ์ ์ํํ๊ณ ๋์, ํผ์ฐ์ฐ์์ ๊ฐ์ 1 ์ฆ๊ฐ์ํด. |
--$var | ๋จผ์ ํผ์ฐ์ฐ์์ ๊ฐ์ 1 ๊ฐ์์ํจ ํ์ ํด๋น ์ฐ์ฐ์ ์ํํจ. |
$var-- | ์ผ์ชฝ์ ํผ์ฐ์ฐ์์๊ฒ ์ค๋ฅธ์ชฝ์ ํผ์ฐ์ฐ์๋ก ๋๋. |
1.4. ๋น๊ต ์ฐ์ฐ์
1.4.1. ๋น๊ต ์ฐ์ฐ์
ํผ์ฐ์ฐ์ ์ฌ์ด์ ์๋์ ์ธ ํฌ๊ธฐ๋ฅผ ํ๋จํ์ฌ ์ฐธ(true)๊ณผ ๊ฑฐ์ง(false)์ ๋ฐํํฉ๋๋ค.
๋น๊ต ์ฐ์ฐ์ | ์ค๋ช |
== | ์ผ์ชฝ์ ํผ์ฐ์ฐ์์ ์ค๋ฅธ์ชฝ์ ํผ์ฐ์ฐ์๊ฐ ๊ฐ์ผ๋ฉด ์ฐธ์ ๋ฐํํจ. |
=== | ์ผ์ชฝ์ ํผ์ฐ์ฐ์์ ์ค๋ฅธ์ชฝ์ ํผ์ฐ์ฐ์๊ฐ ๊ฐ๊ณ , ๊ฐ์ ํ์ ์ด๋ฉด ์ฐธ์ ๋ฐํํจ. |
!= | ์ผ์ชฝ์ ํผ์ฐ์ฐ์์ ์ค๋ฅธ์ชฝ์ ํผ์ฐ์ฐ์๊ฐ ๊ฐ์ง ์์ผ๋ฉด ์ฐธ์ ๋ฐํํจ. |
<> | ์ผ์ชฝ์ ํผ์ฐ์ฐ์์ ์ค๋ฅธ์ชฝ์ ํผ์ฐ์ฐ์๊ฐ ๊ฐ์ง ์์ผ๋ฉด ์ฐธ์ ๋ฐํํจ. |
!== | ์ผ์ชฝ์ ํผ์ฐ์ฐ์์ ์ค๋ฅธ์ชฝ์ ํผ์ฐ์ฐ์๊ฐ ๊ฐ์ง ์๊ฑฐ๋, ํ์ ์ด ๋ค๋ฅด๋ฉด ์ฐธ์ ๋ฐํํจ. |
< | ์ผ์ชฝ์ ํผ์ฐ์ฐ์๊ฐ ์ค๋ฅธ์ชฝ์ ํผ์ฐ์ฐ์๋ณด๋ค ์์ผ๋ฉด ์ฐธ์ ๋ฐํํจ. |
<= | ์ผ์ชฝ์ ํผ์ฐ์ฐ์๊ฐ ์ค๋ฅธ์ชฝ์ ํผ์ฐ์ฐ์๋ณด๋ค ์๊ฑฐ๋ ๊ฐ์ผ๋ฉด ์ฐธ์ ๋ฐํํจ. |
> | ์ผ์ชฝ์ ํผ์ฐ์ฐ์๊ฐ ์ค๋ฅธ์ชฝ์ ํผ์ฐ์ฐ์๋ณด๋ค ํฌ๋ฉด ์ฐธ์ ๋ฐํํจ. |
>= | ์ผ์ชฝ์ ํผ์ฐ์ฐ์๊ฐ ์ค๋ฅธ์ชฝ์ ํผ์ฐ์ฐ์๋ณด๋ค ํฌ๊ฑฐ๋ ๊ฐ์ผ๋ฉด ์ฐธ์ ๋ฐํํจ. |
1.4.2. ๋ค์ํ ํ์ ์ ๋น๊ต
ํผ์ฐ์ฐ์1 | ํผ์ฐ์ฐ์2 | ๋น๊ต ๊ท์น |
bool, null | ๋ชจ๋ | ๋ ๋ค ๋ถ๋ฆฌ์ธ์ผ๋ก ๋ณํํ ํ ๋น๊ตํจ. |
string, resource, integer, float |
string, resource, integer, float |
์ซ์๋ก ์์ํ๋ ๋ฌธ์์ด๊ณผ ๋ฆฌ์์ค๋ ์ซ์๋ก ๋ณํํ ํ ๋น๊ตํจ. |
object | object | ๋ด์ฅ ํด๋์ค๋ ์์ ์ ๋น๊ต ํจ์๋ฅผ ์ ์ํ ์ ์์ผ๋, ๋ค๋ฅธ ํด๋์ค๋ผ๋ฆฌ ๋น๊ตํ ์๋ ์์. |
array | array | ๋ฐฐ์ด๋ผ๋ฆฌ์ ๋น๊ต๋ ๊ฐ์ ํค๋ฅผ ๊ฐ์ง๋ ๊ฐ์ ์๋ก ๋น๊ตํจ. ์ด๋ ํผ์ฐ์ฐ์1 ๋ฐฐ์ด์ ํค๊ฐ ํผ์ฐ์ฐ์2 ๋ฐฐ์ด์ ์กด์ฌํ์ง ์์ผ๋ฉด ๋น๊ตํ ์ ์์ผ๋ฉฐ, ๋ฐฐ์ด ์์์ ์๊ฐ ์ ์ ์ชฝ์ด ์๋ค๊ณ ํ๋จ๋จ. |
array | ๋ชจ๋ | ๋ฐฐ์ด์ด ํญ์ ํฌ๋ค๊ณ ํ๋จ๋จ. |
object | ๋ชจ๋ | ๊ฐ์ฒด๊ฐ ํญ์ ํฌ๋ค๊ณ ํ๋จ๋จ. |
1.5. ๋ ผ๋ฆฌ ์ฐ์ฐ์
๋ ผ๋ฆฌ์์ ํ๋จํ์ฌ ์ฐธ(true)๊ณผ ๊ฑฐ์ง(false)์ ๋ฐํํฉ๋๋ค.
and, or, xor ์ฐ์ฐ์๋ ๋ ๊ฐ์ ์ฐ์ฐ์๋ฅผ ๊ฐ์ง๋ ์ดํญ ์ฐ์ฐ์์ด๋ฉฐ, ! ์ฐ์ฐ์๋ ํผ์ฐ์ฐ์๊ฐ ๋จ ํ๋๋ฟ์ธ ๋จํญ ์ฐ์ฐ์์ ๋๋ค.
๋ ผ๋ฆฌ ์ฐ์ฐ์ | ์ค๋ช |
and | ๋ ผ๋ฆฌ์์ด ๋ชจ๋ ์ฐธ์ด๋ฉด ์ฐธ์ ๋ฐํํจ. (AND ์ฐ์ฐ) |
or | ๋ ผ๋ฆฌ์ ์ค์์ ํ๋๋ผ๋ ์ฐธ์ด๋ฉด ์ฐธ์ ๋ฐํํจ. (OR ์ฐ์ฐ) |
xor | ๋ ผ๋ฆฌ์์ด ์๋ก ๋ค๋ฅด๋ฉด ์ฐธ์ ๋ฐํํจ. (XOR ์ฐ์ฐ) |
&& | ๋ ผ๋ฆฌ์์ด ๋ชจ๋ ์ฐธ์ด๋ฉด ์ฐธ์ ๋ฐํํจ. (AND ์ฐ์ฐ) |
|| | ๋ ผ๋ฆฌ์ ์ค์์ ํ๋๋ผ๋ ์ฐธ์ด๋ฉด ์ฐธ์ ๋ฐํํจ. (OR ์ฐ์ฐ) |
! | ๋ ผ๋ฆฌ์์ ๊ฒฐ๊ณผ๊ฐ ์ฐธ์ด๋ฉด ๊ฑฐ์ง์, ๊ฑฐ์ง์ด๋ฉด ์ฐธ์ ๋ฐํํจ. (NOT ์ฐ์ฐ) |
๋ค์์ ๋ ผ๋ฆฌ ์ฐ์ฐ์์ ๋ํ ์ง๋ฆฌํ์ ๋๋ค.
A | B | A and B (A && B) | A or B (A || B) | A xor B | !A |
true | true | true | true | false | false |
true | false | false | true | true | false |
false | true | false | true | true | true |
false | false | false | false | false | true |
1.6. ๋นํธ ์ฐ์ฐ์
๋ ผ๋ฆฌ ์ฐ์ฐ์์ ๋น์ทํ์ง๋ง, ๋นํธ (bit) ๋จ์๋ก ๋ ผ๋ฆฌ ์ฐ์ฐ์ ์ํํฉ๋๋ค.
๋นํธ ๋จ์๋ก ์ ์ฒด ๋นํธ๋ฅผ ์ผ์ชฝ์ด๋ ์ค๋ฅธ์ชฝ์ผ๋ก ์ด๋์ํฌ ๋๋ ์ฌ์ฉํฉ๋๋ค.
๋นํธ ์ฐ์ฐ์ | ์ค๋ช |
& | ๋์๋๋ ๋นํธ๊ฐ ๋ชจ๋ 1์ด๋ฉด 1์ ๋ฐํํจ. (๋นํธ AND ์ฐ์ฐ) |
| | ๋์๋๋ ๋นํธ ์ค์์ ํ๋๋ผ๋ 1์ด๋ฉด 1์ ๋ฐํํจ. (๋นํธ OR ์ฐ์ฐ) |
^ | ๋์๋๋ ๋นํธ๊ฐ ์๋ก ๋ค๋ฅด๋ฉด 1์ ๋ฐํํจ. (๋นํธ XOR ์ฐ์ฐ) |
~ | ๋นํธ๋ฅผ 1์ด๋ฉด 0์ผ๋ก, 0์ด๋ฉด 1๋ก ๋ฐ์ ์ํด. (๋นํธ NOT ์ฐ์ฐ) |
<< | ์ง์ ํ ์๋งํผ ๋นํธ๋ฅผ ์ ๋ถ ์ผ์ชฝ์ผ๋ก ์ด๋์ํด. (left shift ์ฐ์ฐ) |
>> | ๋ถํธ๋ฅผ ์ ์งํ๋ฉด์ ์ง์ ํ ์๋งํผ ๋นํธ๋ฅผ ์ ๋ถ ์ค๋ฅธ์ชฝ์ผ๋ก ์ด๋์ํด. (right shift ์ฐ์ฐ) |
1.7. ๊ธฐํ ์ฐ์ฐ์
1.7.1. ์ผํญ ์ฐ์ฐ์
์ ์ผํ๊ฒ ํผ์ฐ์ฐ์๋ฅผ ์ธ ๊ฐ๋ ๊ฐ์ง๋ ์กฐ๊ฑด ์ฐ์ฐ์์ด๋ฉฐ, ์๋์ ๊ฐ์ ํํ๋ก ์๋๋ค.
์กฐ๊ฑด์ ? ๋ฐํ๊ฐ1 : ๋ฐํ๊ฐ2
์กฐ๊ฑด์์ ๊ฒฐ๊ด๊ฐ์ด ์ฐธ์ด๋ฉด ๋ฐํ๊ฐ1์ ๋ฐํํ๊ณ , ๊ฑฐ์ง์ด๋ฉด ๋ฐํ๊ฐ2๋ฅผ ๋ฐํํฉ๋๋ค.
<?php
$num_01 = 10;
$num_02 = 4;
$result = ($num_01 > $num_02) ? $num_01 : $num_02;
echo "๋ ์ค์ ๋ ํฐ ์๋ {$result} ์
๋๋ค.";
?>
์ค์ ๋ก ์คํํ ๊ฒฐ๊ณผ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
1.7.2. ๋ฌธ์์ด ์ฐ์ฐ์
๋ฌธ์์ด ์ฐ์ฐ์(.)๋ฅผ ์ฌ์ฉํ์ฌ ๋ฌธ์์ด์ ์ฐ๊ฒฐํ ์ ์์ต๋๋ค.
๋ํ, echo() ํจ์์์๋ ์ผํ ์ฐ์ฐ์(,)๋ฅผ ์ด์ฉํ์ฌ ๋ฌธ์์ด์ ์ฐ๊ฒฐํ ์ ์์ต๋๋ค.
<?php
$str_01 = "Hello";
$str_02 = "World";
echo $str_01.$str_02."<br />";
echo $str_01,$str_02;
?>
์ค์ ๋ก ์คํํ ๊ฒฐ๊ณผ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
1.7.3. ๋ฐฐ์ด ํฉ์งํฉ ์ฐ์ฐ์
๋ฐฐ์ด ํฉ์งํฉ ์ฐ์ฐ์(+)๋ ํผ์ฐ์ฐ์๋ก ์ค๋ ๋ ๋ฐฐ์ด์ ํฉ์งํฉ์ ๋ฐํํฉ๋๋ค.
์ผ์ชฝ ํผ์ฐ์ฐ์์ ๋ฐฐ์ด์ ํค ๊ฐ ์ ์งํ๋ฉด์, ์ค๋ฅธ์ชฝ ํผ์ฐ์ฐ์์ ๋ฐฐ์ด์ ๋ง๋ถ์ด๋ ๋ฐฉ์์ ์ทจํฉ๋๋ค.
์ค์ ๋ก ์ํ์์ผ๋ณด๋ ๊ฒ์ด ์ดํด๊ฐ ๋ ๋น ๋ฅผ ๊ฒ ๊ฐ๋ค์! ๐๐
<?php
$arr_01 = array("1st" => "PHP", "2nd" => "MySQL");
$arr_02 = array("1st" => "HTML", "2nd" => "CSS", "3rd" => "JavaScript");
$result_01 = $arr_01 + $arr_02; // [PHP, MySQL, JavaScript]
var_dump($result_01);
$result_02 = $arr_02 + $arr_01; // [HTML, CSS, JavaScript]
var_dump($result_02);
?>
์ํ ๊ฒฐ๊ณผ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
์ค์ ๋ก ์ํ์์ผ๋ณด๋ ์ด๋ค ์ฐ์ฐ์์ธ์ง ์ดํด๊ฐ ๋์๋์?
ํค ๊ฐ์ด ๋์ผํ ์ฐ์ฐ์์ ๋ํด์๋ง ๋ค๋ฅด๊ฒ ์ฒ๋ฆฌ๋๋ค๊ณ ๋ณด์๋ฉด ๋ฉ๋๋ค.
๊ทธ๋ ๋ค๋ฉด ํค ๊ฐ์ ๋ค๋ฅด๊ฒ ์ค์ ํ๋ฉด ์ด๋ป๊ฒ ๋ ๊น์? ๐ค๐ค
<?php
$arr_01 = array("1" => "PHP", "2" => "MySQL");
$arr_02 = array("3" => "HTML", "4" => "CSS", "5" => "JavaScript");
$result_01 = $arr_01 + $arr_02; // [PHP, MySQL, HTML, CSS, JavaScript]
var_dump($result_01);
$result_02 = $arr_02 + $arr_01; // [HTML, CSS, JavaScript, PHP, MySQL]
var_dump($result_02);
?>
์ฝ๋๋ฅผ ์์ ๊ฐ์ ํํ๋ก ์์ฑํ ํ ์คํ์์ผ๋ณด๋ฉด, ๋ค์๊ณผ ๊ฐ์ ๊ฒฐ๊ณผ๋ฅผ ์ป์ ์ ์์ต๋๋ค.
ํค ๊ฐ ๊ธฐ์ค์ด๋ผ๋ ๊ฒ ๊ผญ ๊ธฐ์ตํ์ธ์!! ๐๐
๋ง์ฝ ํค ๊ฐ์ ๋ํด ๋ช ์ํ์ง ์์ผ๋ฉด ์ด๋ป๊ฒ ๋ ๊น์? ๐ค๐ค
<?php
$arr_01 = array("PHP", "MySQL");
$arr_02 = array("HTML", "CSS", "JavaScript");
$result_01 = $arr_01 + $arr_02; // [PHP, MySQL, JavaScript]
var_dump($result_01);
$result_02 = $arr_02 + $arr_01; // [HTML, CSS, JavaScript]
var_dump($result_02);
?>
์คํ์์ผ๋ณด๋ฉด, ๋ค์๊ณผ ๊ฐ์ด 0๋ถํฐ ์์ํ ๋ฒํธ๋ฅผ ์๋์ผ๋ก ๋ถ์ฌํจ์ ์ ์ ์์ต๋๋ค.
1.7.4. instanceof ์ฐ์ฐ์
instanceof ์ฐ์ฐ์๋ ๋ค์๊ณผ ๊ฐ์ ์ฌํญ์ ํ์ธํ๊ณ ์ ํ ๋ ์ฌ์ฉํ ์ ์์ต๋๋ค.
- ํด๋น ๋ณ์๊ฐ ์ด๋ค ํด๋์ค(class)์์ ์์ฑ๋ ๊ฐ์ฒด(object)์ธ์ง๋ฅผ ํ์ธํ ๋
- ํด๋น ๋ณ์๊ฐ ๋ถ๋ชจ ํด๋์ค(parent class)์์ ์์๋ฐ์ ํด๋์ค์ธ์ง๋ฅผ ํ์ธํ ๋
- ํด๋น ๋ณ์๊ฐ ํด๋์ค์ ์ธ์คํด์ค(instance)์ธ์ง ์๋์ง๋ฅผ ํ์ธํ ๋
- ํด๋น ๋ณ์๊ฐ ์ธํฐํ์ด์ค(interface)๋ก ๊ตฌํํ ํด๋์ค์ ๊ฐ์ฒด ์ธ์คํด์ค(object instance)์ธ์ง ์๋์ง๋ฅผ ํ์ธํ ๋
instanceof ์ฐ์ฐ์์ ์ฌ์ฉ ์ฉ๋๋ฅผ ์์ธํ ์๊ธฐ ์ํด์๋ ๊ฐ์ฒด ์งํฅ ํ๋ก๊ทธ๋จ์ ๋ํ ๊ธฐ๋ณธ ์ง์์ด ํ์ํ๋ฏ๋ก,
์ง๊ธ์ ๊ทธ๋ฅ ๋์ด๊ฐ๋ ์๊ด์์ด์! ์ฐธ๊ณ ๋ง ํ์ธ์. ๐๐
<?php
interface Interface01{}
class Class01{}
class Class02 extends Class01 implements Interface01{}
/* ์ด๋ค ํด๋์ค(class)์์ ์์ฑ๋ ๊ฐ์ฒด(object)์ธ์ง๋ฅผ ํ์ธํ ๋ */
$var_01 = new Class01; // Class01 ํด๋์ค ๊ฐ์ฒด๋ฅผ ์์ฑํจ.
var_dump($var_01 instanceof Class01); // true
var_dump($var_01 instanceof Class02); // false
/* ๋ถ๋ชจ ํด๋์ค(parent class)์์ ์์๋ฐ์ ํด๋์ค์ธ์ง๋ฅผ ํ์ธํ ๋ */
$var_02 = new Class02; // Class02 ํด๋์ค ๊ฐ์ฒด๋ฅผ ์์ฑํจ.
var_dump($var_02 instanceof Class01); // true
var_dump($var_02 instanceof Class02); // true
/* ํด๋์ค์ ์ธ์คํด์ค(instance)์ธ์ง ์๋์ง๋ฅผ ํ์ธํ ๋ */
$var_03 = new Class01; // Class01 ํด๋์ค ๊ฐ์ฒด๋ฅผ ์์ฑํจ.
var_dump(!($var_03 instanceof Class02)); // true
/* ์ธํฐํ์ด์ค(interface)๋ก ๊ตฌํํ ํด๋์ค์ ๊ฐ์ฒด ์ธ์คํด์ค(object instance)์ธ์ง ์๋์ง๋ฅผ ํ์ธํ ๋ */
$var_04 = new Class02; // Class02 ํด๋์ค ๊ฐ์ฒด๋ฅผ ์์ฑํจ.
var_dump($var_04 instanceof Class02); // true
var_dump($var_04 instanceof Interface01); // true
?>
2. ์ ์ด๋ฌธ
ํํ์ ์ค์์๋ ํ๋ก๊ทธ๋จ์ ์์ฐจ์ ์ธ ํ๋ฆ์ ์ ์ดํด์ผ ํ ๋ ์ฌ์ฉํ๋ ๋ช ๋ น๋ฌธ์ ์ ์ด๋ฌธ์ด๋ผ๊ณ ํฉ๋๋ค.
2.1. ์กฐ๊ฑด๋ฌธ
์กฐ๊ฑด๋ฌธ์ด๋ ์ฃผ์ด์ง ์กฐ๊ฑด์ ๋ฐ๋ผ์ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ค๋ฅด๊ฒ ๋์ํ๋๋ก ํ๋ ๊ฒ์ ๋๋ค.
2.1.1. if๋ฌธ
if๋ฌธ์ ์กฐ๊ฑด์์ ๊ฒฐ๊ณผ๊ฐ ์ฐธ(true)์ด๋ฉด ์ฃผ์ด์ง ๋ช ๋ น๋ฌธ์ ์คํํ๋ฉฐ, ๊ฑฐ์ง(false)์ด๋ฉด ์๋ฌด๊ฒ๋ ์คํํ์ง ์์ต๋๋ค.
if (์กฐ๊ฑด์) {
์กฐ๊ฑด์์ ๊ฒฐ๊ณผ๊ฐ ์ฐธ์ผ ๋ ์คํํ๊ณ ์ ํ๋ ๋ช ๋ น๋ฌธ;
}
2.1.2. else๋ฌธ
if๋ฌธ๊ณผ ๊ฐ์ด ์ฌ์ฉํ๋ฉฐ, if๋ฌธ์ ์กฐ๊ฑด์ ๊ฒฐ๊ณผ๊ฐ ๊ฑฐ์ง(false) ์ผ ๋ ์ฃผ์ด์ง ๋ช ๋ น๋ฌธ์ ์คํํฉ๋๋ค.
if (์กฐ๊ฑด์) {
์กฐ๊ฑด์์ ๊ฒฐ๊ณผ๊ฐ ์ฐธ์ผ ๋ ์คํํ๊ณ ์ ํ๋ ๋ช ๋ น๋ฌธ;
}
else {
์กฐ๊ฑด์์ ๊ฒฐ๊ณผ๊ฐ ๊ฑฐ์ง์ผ ๋ ์คํํ๊ณ ์ ํ๋ ๋ช ๋ น๋ฌธ;
}
2.1.3. else if ๋ฌธ
else if๋ฌธ์ if๋ฌธ์ฒ๋ผ ์กฐ๊ฑด์์ ์ค์ ํ ์ ์์ผ๋ฉฐ,
if๋ฌธ๊ณผ else๋ฌธ ์ฌ์ด์์ ์ฌ๋ฌ ๋ฒ ์ฌ์ฉ๋์ด ๋ค์ํ ์กฐ๊ฑด์ ์ค์ ํ ์ ์์ต๋๋ค.
else if๋ผ๊ณ ์ ์ด๋ ๋๊ณ , elseif๋ผ๊ณ ์ ์ด๋ ๋ฉ๋๋ค.
if (์กฐ๊ฑด์1) {
์กฐ๊ฑด์1์ ๊ฒฐ๊ณผ๊ฐ ์ฐธ์ผ ๋ ์คํํ๊ณ ์ ํ๋ ๋ช ๋ น๋ฌธ;
}
else if (์กฐ๊ฑด์2) {
์กฐ๊ฑด์2์ ๊ฒฐ๊ณผ๊ฐ ์ฐธ์ผ ๋ ์คํํ๊ณ ์ ํ๋ ๋ช ๋ น๋ฌธ;
}
else {
์กฐ๊ฑด์1์ ๊ฒฐ๊ณผ๋ ๊ฑฐ์ง์ด๊ณ , ์กฐ๊ฑด์2์ ๊ฒฐ๊ณผ๋ ๊ฑฐ์ง์ผ ๋ ์คํํ๊ณ ์ ํ๋ ๋ช ๋ น๋ฌธ;
}
2.1.4. switch๋ฌธ
switch๋ฌธ์ if-else๋ฌธ๊ณผ ๋ง์ฐฌ๊ฐ์ง๋ก ์ฃผ์ด์ง ์กฐ๊ฑด ๊ฐ์ ๋ฐ๋ผ ํ๋ก๊ทธ๋จ์ด ๋ค๋ฅธ ๋ช ๋ น์ ์ํํ๋๋ก ํ๋ ์กฐ๊ฑด๋ฌธ์ ๋๋ค.
switch๋ฌธ์ if-else๋ฌธ๋ณด๋ค ๊ฐ๋ ์ฑ ์ธก๋ฉด์์ ๋ ์ข์ต๋๋ค.
์ฐธ๊ณ ๋ก case์ ์ ๊ฐ์ ์ผ์น ์ฐ์ฐ์(===)๊ฐ ์๋ ๋๋ฑ ์ฐ์ฐ์(==)๋ฅผ ์ฌ์ฉํ์ฌ ๋์จํ๊ฒ ๋น๊ตํฉ๋๋ค.
๊ทธ๋ฆฌ๊ณ ์ด๋ ํ case ์ ์๋ ํด๋นํ์ง ์์ ๊ฒฝ์ฐ default ์ ์ด ์คํ๋ฉ๋๋ค.
๊ฐ case์ ๋ฐ default ์ ์ ๋ฐ๋์ break ํค์๋๋ฅผ ํฌํจํ๊ณ ์์ด์ผ ํฉ๋๋ค. (switch ํ์ถ์ ์ํด!)
switch (์กฐ๊ฑด ๊ฐ)
{
case ๊ฐ1:
์กฐ๊ฑด ๊ฐ์ด ๊ฐ1์ผ ๋ ์คํํ๊ณ ์ ํ๋ ๋ช ๋ น๋ฌธ;
break;
case ๊ฐ2:
์กฐ๊ฑด ๊ฐ์ด ๊ฐ2์ผ ๋ ์คํํ๊ณ ์ ํ๋ ๋ช ๋ น๋ฌธ;
break;
...
default:
ํด๋น case๊ฐ ์์ ๋ ์คํํ๊ณ ์ ํ๋ ๋ช ๋ น๋ฌธ;
break;
}
2.2. ๋ฐ๋ณต๋ฌธ
๋ฐ๋ณต๋ฌธ์ด๋ ํ๋ก๊ทธ๋จ ๋ด์์ ๊ฐ์ ๋ช ๋ น์ ์ผ์ ํ์๋งํผ ๋ฐ๋ณตํ์ฌ ์ํํ๋ ๋ช ๋ น๋ฌธ์ ๋๋ค.
2.2.1. while๋ฌธ
while๋ฌธ์ ์กฐ๊ฑด์์ด ์ฐธ(true)์ธ ๊ฒฝ์ฐ์๋ง ๋ด๋ถ์ ๋ช ๋ น๋ฌธ์ ์คํํฉ๋๋ค.
while (์กฐ๊ฑด์) {
์กฐ๊ฑด์์ ๊ฒฐ๊ณผ๊ฐ ์ฐธ์ธ ๋์ ๋ฐ๋ณต์ ์ผ๋ก ์คํํ๊ณ ์ ํ๋ ๋ช ๋ น๋ฌธ;
}
2.2.2. do-while๋ฌธ
do-while๋ฌธ์ ๋จผ์ ๋ช ๋ น๋ฌธ์ ํ ๋ฒ ์คํํ ํ ์กฐ๊ฑด์์ ๊ฒ์ฌํ๋ฉฐ,
์กฐ๊ฑด์์ด ์ฐธ(true)์ธ ๊ฒฝ์ฐ ๋ช ๋ น๋ฌธ์ ๋ค์ ์คํํฉ๋๋ค.
์ฆ, ์กฐ๊ฑด์ ๊ฒฐ๊ณผ์ ์๊ด์์ด ๋ฌด์กฐ๊ฑด ํ ๋ฒ์ ๋ช ๋ น๋ฌธ์ ์คํํฉ๋๋ค
do {
์กฐ๊ฑด์์ ๊ฒฐ๊ณผ๊ฐ ์ฐธ์ธ ๋์ ๋ฐ๋ณต์ ์ผ๋ก ์คํํ๊ณ ์ ํ๋ ๋ช ๋ น๋ฌธ;
} while (์กฐ๊ฑด์);
2.2.3. for๋ฌธ
for (์ด๊ธฐ์; ์กฐ๊ฑด์; ์ฆ๊ฐ์) {
์กฐ๊ฑด์์ ๊ฒฐ๊ณผ๊ฐ ์ฐธ์ธ ๋์ ๋ฐ๋ณต์ ์ผ๋ก ์คํํ๊ณ ์ ํ๋ ๋ช ๋ น๋ฌธ;
}
2.3.4. foreach๋ฌธ
foreach๋ฌธ์ ๋ฐฐ์ด์ ๋ชจ๋ ์์๋ฅผ ์์ฝ๊ฒ ์ํํ ์ ์๋๋ก ํด์ค๋๋ค.
์ด ๋ฐ๋ณต๋ฌธ์ ๋ฃจํ๋ง๋ค ๋ฐฐ์ด์ ๊ฐ ์์๋ฅผ ์ง์ ๋ ๋ณ์์ ๋์ ํฉ๋๋ค.
์ด๋ ๊ฒ ๋์ ๋ฐ์ ๋ณ์๋ฅผ ์ด์ฉํ๋ฉด ๋ฃจํ ์์์ ๋ฐฐ์ด์ ๊ฐ ์์์ ์์ฐจ์ ์ผ๋ก ์ ๊ทผํ ์ ์์ต๋๋ค.
๋ฐ๋ผ์ foreach๋ฌธ์ ๋ฐฐ์ด์ ๊ธธ์ด๋งํผ ๋ฐ๋ณต๋ฉ๋๋ค.
foreach (๋ฐฐ์ด as ๊ฐ์ ์ ์ฅํ ๋ณ์) {
์คํํ๊ณ ์ ํ๋ ๋ช ๋ น๋ฌธ;
}
2.3. ๊ธฐํ ์ ์ด๋ฌธ
์ผ๋ฐ์ ์ผ๋ก ์กฐ๊ฑด์ ๊ฒ์ฌ๋ฅผ ํตํด ๋ฃจํ๋ก ์ง์ ํ๋ฉด, ๋ค์ ์กฐ๊ฑด์์ ๊ฒ์ฌํ๊ธฐ ์ ๊น์ง ๋ฃจํ ์์ ๋ชจ๋ ๋ช ๋ น๋ฌธ์ ์คํํฉ๋๋ค.
์ด๋ฌํ ์ผ๋ฐ์ ์ธ ๋ฃจํ ํ๋ฆ์ continue๋ฌธ๊ณผ break๋ฌธ์ ํตํด ์ง์ ์ ์ดํ ์ ์์ต๋๋ค.
2.3.1. continue๋ฌธ
continue๋ฌธ์ ๋ฃจํ ๋ด์์ ํด๋น ๋ฃจํ์ ๋๋จธ์ง ๋ถ๋ถ์ ๊ฑด๋๋ฐ๊ณ , ๋ฐ๋ก ๋ค์ ์กฐ๊ฑด์์ ํ๋จ์ผ๋ก ๋์ด๊ฐ๋๋ค.
๋ณดํต ๋ฐ๋ณต๋ฌธ ๋ด์์ ํน์ ์กฐ๊ฑด์ ๋ํ ์ฒ๋ฆฌ๋ฅผ ์ ์ธํ๊ณ ์ ํ ๋ ์ฌ์ฉ๋ฉ๋๋ค.
<?php
$var = 2;
for ($i = 0; $i < 10; $i++) {
if ($i % 2 == 0) // ์ง์ ์ ์ธ
continue;
echo "{$i}<br />";
}
?>
๊ฒฐ๊ณผ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
2.3.2. break๋ฌธ
break๋ฌธ์ ๋ฃจํ ๋ด์์ ํด๋น ๋ฐ๋ณต๋ฌธ์ ์์ ํ ์ข ๋ฃ์ํค๊ณ , ๋ฐ๋ณต๋ฌธ ๋ค์์ ์์นํ ๋ช ๋ น๋ฌธ์ผ๋ก ์ด๋์ํต๋๋ค.
<?php
$var = 2;
$i = 0;
$sum = 0;
while (true) {
if ($i == $var)
break;
$sum += $i;
$i++;
}
echo $sum;
?>
์์ ์ฝ๋๋ฅผ ๋ณด๋ฉด $i๊ฐ $var์ ๋์ผ ํด์ง๋ ์๊ฐ ๋ฐ๋ณต๋ฌธ์ด ๋๋๊ธฐ ๋๋ฌธ์ $sum์ ๊ฐ์ 1์ด ๋ ์๋ฐ์ ์๋ ๊ตฌ์กฐ์ ๋๋ค.
์คํ ๊ฒฐ๊ณผ๋ฅผ ๋ณด๋ฉด, 1์ด ์ถ๋ ฅ๋๋ ๊ฒ์ ํ์ธํ ์ ์์ต๋๋ค.
2.3.3. goto๋ฌธ
goto๋ฌธ์ ํ๋ก๊ทธ๋จ์ ํ๋ฆ์ ์ง์ ๋ ๋ ์ด๋ธ๋ก ๋ฌด์กฐ๊ฑด ๋ณ๊ฒฝํ๋ ๋ช ๋ น๋ฌธ์ ๋๋ค.
goto๋ ๋ค๋ฅธ ์ ์ด๋ฌธ๊ณผ ๋ค๋ฅด๊ฒ ์๋ฌด ์กฐ๊ฑด ์์ด ์ ์ด๋ฅผ ์ฎ๊ฒจ์ฃผ๊ธฐ ๋๋ฌธ์, ํ๋ก๊ทธ๋จ ํ๋ฆ์ ๋งค์ฐ ๋ณต์กํ๊ฒ ๋ง๋ค ์๋ ์์ต๋๋ค. ์ด๋ฌํ ๋จ์ ์ผ๋ก ์ธํด ํ์ฌ๋ ๊ฑฐ์ ์ฌ์ฉํ์ง ์์ต๋๋ค. (๊ทธ๋์ ์ฌ์ฉ๋ฒ์ ์ฐ์ง ์์์ด์!)
๐Reference
'PHP' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[PHP] ๊ธฐ๋ณธ ๋ฌธ๋ฒ ์ ๋ฆฌ (3) (feat. ๋ฐฐ์ด) (0) | 2021.07.17 |
---|---|
[PHP] ๊ธฐ๋ณธ ๋ฌธ๋ฒ ์ ๋ฆฌ (1) (0) | 2021.07.12 |
[PHP] ์ฒซ ๋ฒ์งธ PHP ์ ํ๋ฆฌ์ผ์ด์ ์์ฑํ๊ธฐ (0) | 2021.07.12 |
[PHP] PHP Storm ์ค์ (0) | 2021.07.12 |
[PHP] Bitnami๋ก PHP ํ๊ฒฝ ์ธํ ํ๊ธฐ (0) | 2021.07.12 |
๋ธ๋ก๊ทธ์ ์ ๋ณด
๋๋ถ๋์ Devlog
๋๋ถ๋