sun's longitude:258 24 22.66 
· 자유게시판 · 묻고답하기 · 알파문서 · RPMS list
· 사용자문서 · 팁/FAQ모음 · 리눅스Links · 자료실
· 서버정보 · 운영자 · Books/FAQ · FreeBSD
/board/read.php:소스보기  

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

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

[*** 쓰기 금지단어 패턴 ***]
글 본문 중간에 업로드할 이미지를 추가하는 방법 : @@이미지이름@@
ex) @@foo.gif@@
2855 번 글의 답장글: Re: 배열문제좀 여쭤볼려고요..
글쓴이: 산이 [홈페이지] 글쓴날: 2010년 04월 06일 02:19:21 화(새벽) 조회: 1955

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

>안녕하세요.. 
>
>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);
}

이런식으로 짜면 됩니다.

 
이전글 : 배열문제좀 여쭤볼려고요..
다음글 : 스팸이용  
 from 211.108.72.250
JS(Redhands)Board 0.4 +@

배열문제좀 여쭤볼려고요.. 스팸이용
인쇄용 


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

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