질문을 삭제하지 말아주세요.!
 
1
0
-1

\App\User::get();

이런식으로 불러온 데이터들이 

이름 : 홍길동 , 나이 : 14 , 거주지 : 서울   .... 

이름 : 태스트 , 나이 : 12 , 거주지 : 부산   ....

이런 데이터들을 갖고 있으면 사는곳만 따로 빼서 배열을 만드려고 하고 있습니다. 

거주지: 서울 , 거주지:부산 이렇게요 

메뉴얼 보니 array_column(배열 , 컬럼이름) 이렇게 사용하면

원하는 컬럼만 따로 빼내어 배열을 만들어 주는데 사용해보면

array_column() expects parameter 1 to be array, object given

위와 같은 에러가 나는데 어떤 부분을 확인해보면 될까요 ?? 


그리고 위와같이 사는곳만 따로 빼내어서 배열을 만들었다면

1배열 [  거주지: 부산 , 거주지: 서울 ]

2배열 [ 거주지: 광주 ,거주지:서울 ,거주지: 부산]


이 두가 지 배열을 비교해서 중복된 데이터 서울은 지워주고 중복된 데이터는 지워주고 중복되지 않은 데이터 

광주만 나오게 하는 함수도 있을까요 ?? 많은 질문 죄송합니다 ㅠㅠ 




    CommentAdd your comment...

    3 answers

    1.  
      2
      1
      0

      라라벨은 쿼리시 Collection객체를 리턴하므로, Collection의 toArray()를 써서 배열로 바꿔주셔야 합니다

      https://laravel.kr/docs/5.6/collections#method-toarray

      $users = \App\User::get();
      array_column($users->toArray(), '거주지')

      Collection에는 다양한 기능이 있으므로 배열로 바꾸지 마시고요, array_column과 같은 기능은 Collection에서 아래처럼 쓸수도 있습니다

      https://laravel.kr/docs/5.6/collections#method-pluck

      $users = \App\User::get();
      $users->pluck('거주지')

      마찬가지로 비교하여 다른걸 찾아내는 diff 같은 함수도 쓸수 있습니다

      https://laravel.kr/docs/5.6/collections#method-diff

      $address1 = collect(['부산', '서울']); // collect()로 감싸면 배열이 Collection이 됩니다
      $address2 = collect(['광주', '서울', '부산']);
      $diff = $address2->diff($address1);
      
      
      // $diff값: ['광주']



        CommentAdd your comment...
      1.  
        1
        0
        -1

        일단 첫번째 문제는 catchu87 님 말씀데로 첫번째 파미미터 데이터 형에 대한 문제 같고


        두번째는 좀 말이 안되는 상황 같습니다.

        배열을 만들게 되면,

        같은 배열 내에서는 같은 키값으로 중복으로 설정 할수 없습니다.

        뒤에 것이 앞에것을 덮어씌우게 되는게


        1배열 [  거주지: 부산 , 거주지: 서울 ]

        2배열 [ 거주지: 광주 ,거주지:서울 ,거주지: 부산]


        이런 배열은 있을수 없을 것 같습니다.


        <?php
        
        
        $input = [
        	['거주지' => '부산', '거주지' => '서울'],	
        	['거주지' => '광주', '거주지' => '서울', '거주지' => '부산']
        ];
        
        print_r($input);
        
        
        /*
        Array
        (
            [0] => Array
                (
                    [거주지] => 서울
                )
            [1] => Array
                (
                    [거주지] => 부산
                )
        )
        */
          CommentAdd your comment...
        1.  
          1
          0
          -1

          첫번째는 파라미터 관련문제인거같은데 

          넘겨주는 파라미터 데이터 형태를 array형식으로 하라는거 같네요.


          두번째는 A배열에서 B배열의 항목을 제외하고 싶을떄는

          array_key_exist 라는 함수를 활용해서 

          B배열을 foreach 로 순환하면서 A배열의 값을 체크 및 delete 방식

          또는 new Array 에 등록시키는 방법을 하는게 어떨까요?


            CommentAdd your comment...