【PHP】초실용적! 참조 사용 (≒ 참조 전달)없이 배열의 내용을 가자.

14933 단어 PHP7초보자PHP

소개



조금 전에 썼다.
「【PHP】전 내가 실무로 울었던 「가치 전달」과 「참조 통과」를 완! 모두! 이치! 해"
에서 연상 배열의 내용을 만질 때 참조 전달 참조의 사용을 사용했습니다.

(이전 기사에서 코멘트를 받았지만 정확하게는 참조 전달이 아니라 참조 사용이라고 말하는 것 같습니다)

※그 차이에 대해서는 상기의 기사의 코멘트란을 체크해 주세요.

하지만 앞에서 설명한 방법으로는 후속 처리가 잘 되지 않았습니다.

그런 때에 선배에게 이 기사에서 소개하는 방법을 가르쳐 주었으므로 정리합니다.

게다가 실용적

이 기사의 추천 독자


  • 방금 실무에 들어간 분
  • 앞으로 실무에 들어갈 예정인

  • 3 분이면 전부 읽을 수 있으므로 꼭 읽어보세요

    참조 사용 (≒ 참조 전달)없이 배열의 내용을 반죽하는 방법



    위의 기사와 동일한 코드를 사용합니다.
    <?php
    
    // 配列を2つ定義
    $members = [
        'Aさんの好きな果物' => [
            'りんご' => 'apple',
            'ぶどう' => 'grape',
            'バナナ' => 'banana',
        ],
        'Bさんの好きな果物' => [
            'マンゴー' => 'mango',
            'パイナップル' => 'pineapple',
            'ドラゴンフルーツ' => 'dragon fruit',
        ],
    ];
    $fruits = [
        'ざくろ' => 'pomegranate',
        'オレンジ' => 'orange',
        'もも' => 'peach',
    ];
    
    // $membersに$fruitsの要素を追加
    foreach ($members as &$member) {
        $member['ざくろ'] = $fruits['ざくろ'];
        $member['もも'] = $fruits['もも'];
    }
    
    // 配列を出力
    var_dump($members);
    

    foreach 안에
    &$member
    

    이것이 참조 전달 참조 전달을 나타내는 쓰기 방법.

    그래서 이것을 사용하지 않고 원하는 내용을 출력하는 방법은 여기! 돈!
    <?php
    
    // 配列を2つ定義
    $members = [
        'Aさんの好きな果物' => [
            'りんご' => 'apple',
            'ぶどう' => 'grape',
            'バナナ' => 'banana',
        ],
        'Bさんの好きな果物' => [
            'マンゴー' => 'mango',
            'パイナップル' => 'pineapple',
            'ドラゴンフルーツ' => 'dragon fruit',
        ],
    ];
    $fruits = [
        'ざくろ' => 'pomegranate',
        'オレンジ' => 'orange',
        'もも' => 'peach',
    ];
    
    // $membersに$fruitsの要素を追加
    foreach ($members as $index => $member) {
        $members[$index]['ざくろ'] = $fruits['ざくろ'];
        $members[$index]['もも'] = $fruits['もも'];
    }
    
    // 出力
    var_dump($members);
    

    출력 결과
    array(2) {
      ["Aさんの好きな果物"]=>
      array(5) {
        ["りんご"]=>
        string(5) "apple"
        ["ぶどう"]=>
        string(5) "grape"
        ["バナナ"]=>
        string(6) "banana"
        ["ざくろ"]=>
        string(11) "pomegranate"
        ["もも"]=>
        string(5) "peach"
      }
      ["Bさんの好きな果物"]=>
      array(5) {
        ["マンゴー"]=>
        string(5) "mango"
        ["パイナップル"]=>
        string(9) "pineapple"
        ["ドラゴンフルーツ"]=>
        string(12) "dragon fruit"
        ["ざくろ"]=>
        string(11) "pomegranate"
        ["もも"]=>
        string(5) "peach"
      }
    }
    

    제대로 각 배열에 요소가 2개 추가되어 있습니다! !

    변경한 것은
    foreach ($members as &$member) {
        $member['ざくろ'] = $fruits['ざくろ'];
        $member['もも'] = $fruits['もも'];
    }
    

    여기
    foreach ($members as $index => $member) {
        $members[$index]['ざくろ'] = $fruits['ざくろ'];
        $members[$index]['もも'] = $fruits['もも'];
    }
    

    이렇게 바꿨습니다.

    코드 설명(쉬운)


    foreach ($members as $index => $member) {
        $members[$index]['ざくろ'] = $fruits['ざくろ'];
        $members[$index]['もも'] = $fruits['もも'];
    }
    

    첫째, foreach ($members as $index => $member)에서 첫 번째 연관 배열은
  • $index :'A씨가 좋아하는 과일'
  • $members :
  • [
        'りんご' => 'apple',
        'ぶどう' => 'grape',
        'バナナ' => 'banana',
    ]
    

    입니다.

    그래서 $members[$index]['ざくろ'] = $fruits['ざくろ'];로함으로써,
    $members['Aさんの好きな果物']['ざくろ'] = 'pomegranate';
    

    됩니다.

    즉, 원래 연상 배열members에 요소를 추가할 수 있는 것입니다.$members[$index]['もも'] = $fruits['もも']; 도 마찬가지이므로 할애.

    이렇게 하면 참조를 사용하지 않고 foreach를 사용해도 배열의 내용을 이지할 수 있습니다.

    (흥미롭게도 $member는 사용하지 않네요)



    이 방법, 상당히 사용할 수 있습니다! 실무에서도 상당히 사용하고 있습니다! 추천입니다!

    연상 배열의 취급 방법이 능숙해지면 실무에서의 개발 스피드는 상당히 오르지 않으면 매일 통감하고 있습니다.
    (물론 다른 스킬도 많이 있지만 w)

    만약 내용을 마음에 들어 주시면 LGTM을 부탁드립니다.

    끝까지 읽어 주셔서 감사합니다

    좋은 웹페이지 즐겨찾기