CI 묻고 답하기

제목 배열에 관한 질문 입니다^^
글쓴이 용접공 작성시각 2016/02/20 20:09:06
댓글 : 8 추천 : 0 스크랩 : 0 조회수 : 13202   RSS

안녕하세요^^ 

배열이 어렵네요..............

array(2) {
  [0]=>
  array(2) {
    ["big"]=>
    string(5) "홍길동1"
    ["small"]=>
    string(2) "A"
  }
  [1]=>
  array(2) {
    ["big"]=>
    string(5) "길동형"
    ["small"]=>
    string(1) "BB"
  }
}

var_dump로 보면 배열이 위와 같이 들어가 있습니다.

실은 디비에서   big 컬럼과 small 컬럼을 불러와서 굳이 저렇게 배열에 담았습니다.

실은 배열에 닮아 세션에 저장해서 언제든 불러와서 사용할려고 합니다.

위와 같이 하지 않고 아래 것을 구현하는 좋은 방법이 있으면 알려주세요^^

-----------------  아        래   ------------------------------------------------

제가 구현 하고 싶은 것은 홍길동을 예를 들자면

1. '홍길동'이라는 값이 들어 있는지 체크.

2. 들어 있다면 홍길동이가 들어 있는 키 인덱스 번호를 알아와서 small키에 있는 'A' 값을 가져오면 되는 것입니다.

3 홍길동이가 없으면 종료.

쉬운것 같은데 어렵네요 ㅜㅜ;

고수님들 좋은 답변 기다리겠습니다.

 

감사합니다.^^

 

 

 다음글 웹페이지 캐싱시 캐싱파일이 생성만 되고 삭제는 되지 않... (2)
 이전글 controllers 디렉토리 구성 질문입니다. (2)

댓글

용접공 / 2016/02/20 20:35:13 / 추천 0

ㅎㅎㅎ 고생좀 했습니다.

foreach($data as $k => $v)
        {
            echo  $k ."-- 인덱스 no --##--  ";
            echo  $v['big']."-- 홍길동--##--";
            echo  $v['small']."--A--## <br>";

        }

 이렇게 루프문을 돌려 찾으면 되는 거였습니다.

덕분에 이제 좀 배열을 알것 같습니다.

용접공 / 2016/02/20 20:35:59 / 추천 0
더 좋은 방법을 알고 계신 분은 알려주세요 ^^
마카오최 / 2016/02/20 21:09:21 / 추천 0
<?
// -------------------------------------------------------------------------------------------------------------------------------------------
// 2차 배열에서 매칭되는 특정 키값의 값 가져오기
// 2016 MJ
function get_small_value($data, $name, $f_key) 
{
	foreach($data as $key) 
	{
		foreach ( $key as $k => $v) {
			if($name == $key[$k]) {
				$s_value = $key[$f_key];
				return $s_value;
			} 
		}
	}
}
// -------------------------------------------------------------------------------------------------------------------------------------------


// 2차배열의 형태
$data = array(
	array(
		"big"=>"홍길동1",
		"small"=>"A",
	),
	array(
		"big"=>"길동형",
		"small"=>"BB",
	)
);

// 찾으려는 이름
$name = "홍길동1";

// 찾으려는 배열 키값
$f_key = "small";
 


// 사용 예
$result = get_small_value($data, $name, $f_key);
echo $result;

?>

배열의 형태가 저런 형태라면 쿼리 가져온 리스트중에서 찾으려는것 같아보이는데요 ~

함수로 빼면 재사용도 가능하고 여러모로 유용하게 될것 같습니다.

저도 보면서 필요할수 있겠다 싶어 한번 만들어봤습니다.

위 코드를 빈페이지에 그대로 넣어보시고

코드 아래쪽에 $name 변수와 $f_key 변수설정하는 부분만 변경해보시면서 테스트 해보시면 될것 같습니다.

용접공 / 2016/02/20 21:25:12 / 추천 0

우와 정말 최고입니다~~~~~~~~~~~~~~~~~  ^^

감사합니다.^^

제가 잘못 알고 있는건 아닌지 위에 것에서 return $x;

가 두번 리턴되는 것 아닌가요??

마카오최 / 2016/02/20 21:29:18 / 추천 0

엇 작성해놓고 보니 약간 오류가 있었습니다.

함수를 통째로 아래와 같이 변경해주세요 ~

위 함수 다시 수정해 놓겠습니다. ~~~

// -------------------------------------------------------------------------------------------------------------------------------------------
// 2차 배열에서 매칭되는 특정 키값의 값 가져오기
// 2016 MJ
function get_small_value($data, $name, $f_key) 
{
	foreach($data as $key) 
	{
		foreach ( $key as $k => $v) {
			if($name == $key[$k]) {
				$s_value = $key[$f_key];
				return $s_value;
			} 
		}
	}
}
// -------------------------------------------------------------------------------------------------------------------------------------------

 

용접공 / 2016/02/20 21:33:57 / 추천 0
ㅎㅎㅎ 네 정말 감사합니다. 짱이십니다. ^^
용접공 / 2016/02/20 21:43:09 / 추천 0

저는 이렇게 작성해 봤습니다.

 

//

//

public function small_check($arr, $big_v, $small_v) 
    {             
                                $is_tf = is_array($arr) ? true : false;

                                $return_=false;
                                if($is_tf) {
                                    foreach($arr as $k => $v)
                                        {
                                            if($v['big'] == $big_v) {
                                              
                                              $result = stristr($v[small], $small_v);
                                                  if($result!==false){
                                                        $return_=TRUE;
                                               } 

                                            }
                                           
                                          }
                                    return $return_;

                                } else {

                                    return $return_;
                                }
                                    

} // 
 
// 사용 예
$big ='홍길동';
$small_v='B';
// big값에 홍길동 small 값에 B가 있으면 TRUE, 아니면 false
$result = small_check($data$big$small_v);
echo $result;
 
 

 

마카오최 / 2016/02/20 22:08:10 / 추천 0

또는 in_array를 사용하여 이렇게 해주셔도 됩니다 ~

// -------------------------------------------------------------------------------------------------------------------------------------------
// 2차 배열에서 매칭되는 특정 키값의 값 가져오기
// 2016 MJ
function get_small_value($data, $find_value, $out_array_key ) {
	if(isset($data)) {
		foreach($data as $arr) {
			if( in_array($find_value,$arr) ) {
				$result = $arr[$out_array_key];
			}
		}
	} else {
		$result = false;
	}

	return $result;
}
// -------------------------------------------------------------------------------------------------------------------------------------------