내일은 대한입니다.
sun's longitude:299 11 3.20 
· 자유게시판 · 묻고답하기 · 알파문서 · RPMS list
· 사용자문서 · 팁/FAQ모음 · 리눅스Links · 자료실
· 서버정보 · 운영자 · Books/FAQ · FreeBSD
/board/delete.php:소스보기  

질문과 답변 게시판입니다.

현재 실시간으로 이곳 서버의 설정파일(몇개)를 보여주고 있습니다.
서버의 설정내용에 관한 질문은 먼저 이곳 서버의 설정내용을 참고하시길 바랍니다.

[*** 쓰기 금지단어 패턴 ***]
글 본문 중간에 업로드할 이미지를 추가하는 방법 : @@이미지이름@@
ex) @@foo.gif@@
 ★ 글 지우기 항목입니다. 한번 더 생각하시고 결정하십시오.!!!
제목 8152 번 글의 답장글 : Re: 배열문제좀 여쭤볼려고요..
 이름  산이 [홈]http://linuxchannel.net/

[김성민]님이 남기신 글:

>안녕하세요..
>
>php 배열문제좀 여쭤볼려고요..
>
>$body = Array(
>"서울시 강남구 무슨동 11569 어쩌구...",
>"서울시 강남구 요슨동 11569 어쩌구...",
>"서울시 강북구 아리동 11500 어쩌구...",
>"서울시 강북구 아리동 11569 어쩌구...",
>);
>
>for($i=0; $i<count($body); $i++){
>$str = explode(" ", $body[$i]);
>$last = "";
>for($n=3; $n<count($str); $n++){
> $last .= "".$str[$n];
>}
>$data[] = Array('res1' => $str[0], 'res2' => $str[1], 'res3' => $str[2], 'Last' => $last);
>}
>
>foreach($data as $key => $row){
>$res1[$key] = $row['res1'];
>$res2[$key] = $row['res2'];
>$res3[$key] = $row['res3'];
>$Last[$key] = $row['Last'];
>}
>
>array_multisort($res1, SORT_ASC, $res2, SORT_ASC, $data);
>
>echo "<pre>";
>print_r ($data);
>echo "</pre>";
>
>이렇게 하여,
>
>[0] = 서울시
>[1] = 강남구
>[2] = 무슨동
>[3] = 11569 어쩌구...",
>
>이런식으로 [0] 을 오름차순, [1]을 오름차순 하여 출력하는 것 까지는 됩니다.
>근데, [2] = 무슨동 부터 해당하는 부분을 랜덤으로 하고자 하는데 도무지 어려워서 여쭤봅니다.
>
>그니까, 출력조건이 [0]번째 오름차순, [1]번째 오름차순, [2]번째 랜덤. 인데,
>
>"서울시 강남구 무슨동 11569 어쩌구...",
>"서울시 강남구 요슨동 11569 어쩌구...",
>"서울시 강북구 아리동 11500 어쩌구...",
>"서울시 강북구 아리동 11569 어쩌구...",
>
>이게 배열이라면,
>
>"서울시 강남구 무슨동 11569 어쩌구...",
>"서울시 강남구 요슨동 11569 어쩌구...",
>"서울시 강북구 아리동 11500 어쩌구...",
>"서울시 강북구 아리동 11569 어쩌구...",
>
>아리동을 가지고 있는 2개중 11500 이 먼저 나올수도 있고 나중에 나올수도 있는 형태입니다.
>서울시 강북구 아리동은 둘다 같으니 같이 정렬되면서 뒤에만 랜덤으로 할수 있는 방법이 있을까 해서 문의드립니다...

========================================

시(도) 구(군) 동(면) 을 각각 다차원 배열로 생성해서 제일 마지막 배열을 shuffle() 하거나
동이름까지를 하나의 키로 배열을 만들어 shuffle() 하면 됩니다.

전자의 경우는 좀 무식한 방법이기는 하지만

$data["서울시"]["강남구"]["무슨동"][] = "11569 어쩌구...";

이런식으로 배열을 만들고 data 배열을

foreach($data AS $city=>$arr1)
{
foreach($arr1 AS $gu=>$arr2)
{
foreach($arr2 AS $dong=>$arr3)
{
shuffle($arr3);
$data[$city][$gu][$dong] = $arr3
}
}
}

이렇게 구현해야 합니다.


후자의 경우는

$data = array();
for( ... )
{
preg_match('^/([^\s]+\s+[^\s]+\s+[^\s]+)\s+(.+)$/',trim($body[$i]),$m);
$data[base64_encode($m[1])][] = $m[2];
}

// suffle and rewrite
foreach($data AS $k=>$arr)
{
shuffle($arr);
$data["$k"] = $arr;

// debug
echo base64_decode($k).' ';
print_r($arr);
}

이런식으로 짜면 됩니다.
2010년 04월 06일 02:19:21 화(새벽)  from 211.108.72.250
0
암호: 공용 보안 SSL 서버가 준비되기 전까지는 off 합니다

apache lighttpd linuxchannel.net 
Copyright 1997-2025. linuxchannel.net. All rights reserved.

Page loading: 0.01(server) + (network) + (browser) seconds