본문 바로가기

Programing (프로그래밍)/PHP 및 그누보드

PHP - 배열 다루기 ( 추가 삽입 제거 생성 기본배열 빈배열 다중배열 정렬 order sort 배열마지막 )

728x90
반응형

배열 마지막 여부 확인하기

<?
$arrlst = ['A','B','C'];

foreach($arrlst as $strlst)
{
	if(count($arrlst) == ++$i){    // 배열 마지막 일때
		echo $i ." : " .$strlst;
}
?>

 

이중배열 시 내부 배열(i) 마지막 여부, 외부 배열(j) 마지막 여부  확인하기

<?
$arrlst = ['A','B','C'];

foreach($arrlst as $strlst)
{
	foreach($arrlst as $strlst)
	{
		if(++$i % count($arrlst) == 0)    // ++$i 가 뒤로 가면 안됨 
		{
			// 배열 마지막 일때 - 내부 배열
			echo "i = $i : ";
			echo "$strlst <br>";
		}

		if(++$j == count($arrlst) * count($arrlst))
		{
			echo "i = $i : j = $j : End <br>";
		}
	}
}
// 결과값
// i = 3 : C
// i = 6 : C
// i = 9 : C
// i = 9 : j = 9 : End
?>

 

 

PHP - 배열 다루기 ( 추가 삽입 제거 생성 기본배열 빈배열 다중배열 정렬 order sort )

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
<?
// 빈 배열 만들기
$myArray = array();
 
// 배열 - 기본
$myArray = ['a','b','c'];
print_r($myArray);   // Array ( [0] => a [1] => b [2] => c )
echo "<br>";
 
// 배열 - 추가_뒤 (맨끝, 끝부분, 끝에, 뒤에, 맨뒤)
array_push($myArray'a');
print_r($myArray);    // Array ( [0] => a [1] => b [2] => c [3] => a )
echo "<br>";
 
// 배열 - 추가_앞 (맨앞, 앞부분, 앞에)
array_unshift($myArray'a');
print_r($myArray);    // Array ( [0] => a [1] => a [2] => b [3] => c [4] => a )
echo "<br>";
 
//     배열 - 크기 확인
print_r(count($myArray));    // 5
echo "<br>";
 
// 배열 - 부분 추출하기
$sliceArray = array_slice($myArray22);
print_r($sliceArray);    // Array ( [0] => b [1] => c )
echo "<br>";
 
// 배열 - 합치기
$mergeArray = array_merge($myArray$sliceArray);
print_r($mergeArray);    // Array ( [0] => a [1] => a [2] => b [3] => c [4] => a [5] => b [6] => c )
echo "<br>";
 
// 배열 - 중복제거 (중복데이터 중 배열 앞쪽에 위치한것만 남김)
$unique = array_unique($myArray);
print_r($unique);    // Array ( [0] => a [2] => b [3] => c )
echo "ㅇㅇㅇㅇㅇ<br>";
 
// 배열 - 부분 삭제하기
$spliceArray = array_splice($unique22);
print_r($spliceArray);    // Array ( [0] => c )
echo "<br>";
 

// 연관배열 Key Value 
echo $arr['A'= 1;
echo $arr['B'= 2;
echo $arr['C'= 3;
 
// 연관배열 Key Value 
$arr = array('A'=>1,'B'=>2,'C'=>3);
 
echo $arr[A];

// 배열 - 연관배열 만들기 ( key / value , 키 / 값 )
// * 배열 갯수가 다르면 에러 발생
$KyeArray = ['a','b','c'];
$valueArray = [1,2,3];
if(count($KyeArray== count($valueArray))
    $combineArray = array_combine($KyeArray$valueArray);
print_r($combineArray);    // Array ( [a] => 1 [b] => 2 [c] => 3 )
echo "<br>";
 
 
// 배열 - 출력하기
foreach($combineArray as $key => $value)
    echo "$key = $value" ."<br>";
/*
a = 1
b = 2
c = 3
*/
 
// 클래스 - 생성하기 / 출력하기
$std = new stdClass();
$std->foo = 42;
echo $std->foo;    // 42
 
$std->{3= 42;
echo $std->{3};    // 42
echo "<br>";
 
 
// [ str2Array ] string -> 키,값 배열로 변환
// 각 줄(라인)을 배열화 ( $arrLines )
// 각 줄(라인)의 구분자를 통한 배열화 ( $arrData )
// Key ( $KeyArray ), Value 로 변경 ( $combineArray - 다차원배열 )
// 예) $dataArray = str2Array($str, $KeyArray);
// 총 몇줄? count($dataArray)
// 출력 방법 : $dataArray[0]['A']
 
/* Array ( 
[0] => Array ( [A] => 1 [B] => 2 [C] => 3 ) 
[1] => Array ( [A] => B [B] => c [C] => A ) 
[2] => Array ( [A] => a [B] => b [C] => c ) ) */
 
$str = "
1|2|3
B|c|A
a|b|c
";
$KeyArray = ['A','B','C'];
$delimiter01 = PHP_EOL;
$delimiter02 = "|";
 
$dataArray = str2Array($str$KeyArray$delimiter01$delimiter02);
 
function str2Array($str$KeyArray$delimiter01$delimiter02){
    $dataArray = array();
$str = $str .$delimiter02;    // 마지막 배열을 맞추기 위해 추가한다.
    $arrLines = explode($delimiter01$str);    // $delimiter01 (구분자)을 기준으로 배열에 넣는다.
    foreach($arrLines as $line){
        if(trim($line!== "" ){
            $arrData = explode($delimiter02$line);    // $delimiter01 (구분자)를 기준으로 배열에 넣는다.
            $arrData = array_map('trim',$arrData);    // trim(), 앞뒤공백제거
 
            if(count($KeyArray== count($arrData)){    // $KeyArray 배열 수와 $arrData 배열수가 같으면 두 배열을 combine 한다.
                $combineArray = array_combine($KeyArray$arrData);
                array_push($dataArray,$combineArray);
            }
else {
echo "ERROR : " .$arrData ."<br>";
}
        }
    }
    print_r($dataArray);
    return $dataArray;
}
echo "<br>";
 
 
 
// 다차원배열 정렬하기 ( array_multisort() )
// 참고 : https://procodes.tistory.com/1280
array_multisort(array_column($dataArray'B'), SORT_ASC, $dataArray);    // SORT_ASC, SORT_DESC
print_r($dataArray);
 
/*
Array ( [0] => Array ( [A] => 1 [B] => 2 [C] => 3 ) [1] => Array ( [A] => B [B] => c [C] => A ) [2] => Array ( [A] => a [B] => b [C] => c ) )
Array ( [0] => Array ( [A] => 1 [B] => 2 [C] => 3 ) [1] => Array ( [A] => a [B] => b [C] => c ) [2] => Array ( [A] => B [B] => c [C] => A ) )
*/
echo "<br>";
echo $dataArray[0][A];
echo "<br>";
 
foreach ($dataArray as $arr){
    foreach ($arr as $key => $value) {
        echo $key ." = " .$value ." | ";
    }
    echo "<br>";
}
echo "<br>";
 
foreach ($dataArray as $arr){
    echo "A = " .$arr[A] ." | ";
}
echo "<br>";
 
?>
cs

 

728x90
반응형