Upgrade to Pro — share decks privately, control downloads, hide ads and more …

PHPのimmutable arrayとは

hnw
January 25, 2023

PHPのimmutable arrayとは

Quite Night 〜PHP〜 (2023/01/25) 発表資料

hnw

January 25, 2023
Tweet

More Decks by hnw

Other Decks in Technology

Transcript

  1. What are immutable arrays in PHP
    1)1ͷJNNVUBCMF
    BSSBZͱ͸
    2VJUF/JHIUʙ1)1ʙ

    ൃදࢿྉ

    !IOX

    View Slide

  2. ࣗݾ঺հ
    ❖ !IOX
    ❖ ॴଐɿ,-BCגࣜձࣾ
    ❖ 8FBSFIJSJOH
    ❖ 1)1ຊମͷ$ιʔείʔυΛಡΉͷ͕झຯ
    ❖ 1)1ຊମͷόάΛ໿݅ใࠂ

    View Slide

  3. ࣗݾ঺հ
    1)1FS,BJHJ
    1)1ΧϯϑΝϨϯεؔ੢

    View Slide

  4. ຊϓϨθϯͷΰʔϧ
    *NNVUBCMFBSSBZͷ࿩୊Λ௨ͯ͡
    Έͳ͞Μ͕1)1ͷ಺෦࣮૷ʹڵຯΛ࣋ͭ

    View Slide

  5. *NNVUBCMFʢϓϩάϥϛϯά༻ޠʣ
    ͬͯ͝ଘ஌Ͱ͠ΐ͏͔

    View Slide

  6. *NNVUBCMFͱ͸
    ❖ ʮ஋ͷมߋ͕Ͱ͖ͳ͍ʯͷҙຯ
    ❖ ྫɿ1ZUIPOͷUVQMF
    ❖ JNNVUBCMFͳσʔλߏ଄
    ❖ ೚ҙݸͷఆ਺ͷ૊Λදݱ͢Δ
    ❖ ཁૉͷॻ͖׵͑ɾ௥Ճɾ࡟আ͸Ͱ͖ͳ͍

    View Slide

  7. 1)1ͷJNNVUBCMFBSSBZͱ͸
    ❖ 1)1ͷݴޠ࢓্༷ͷ֓೦Ͱ͸ͳ͍
    ❖ ެࣜϚχϡΞϧ౳ʹ͸ొ৔͠ͳ͍
    ❖ શΩʔɾશཁૉ͕ϦςϥϧͰ͋Δ഑ྻͷ಺෦࣮૷্ͷ໊લ
    ❖ 1)1ͷߴ଎ԽϓϩδΣΫτͰJNNVUBCMFBSSBZʹಛԽ
    ͨ͠࠷దԽ͕࣮૷͞Εͨ

    View Slide

  8. 1)1ͷ஌ΒΕ͟Δੑೳվળ
    ❖ ϨίʔυɺΧϥϜͷ࣍ݩ഑ྻΛฦ͢ྫ
    function foo() {
    return [
    "x1"=>["foo"=>1,"bar"=>2/* (ུ) */,"thud"=>13],
    "x2"=>["foo"=>1,"bar"=>2/* (ུ) */,"thud"=>13],
    /* ໿30000ߦলུ */
    "x30000"=>["foo"=>1,"bar"=>2/* (ུ) */,"thud"=>13],
    ];
    }
    foo();

    View Slide

  9. 1)1ͷ஌ΒΕ͟Δੑೳվળ
    ❖ 1)1ͱൺ΂ͯ1)1͸ஈҧ͍ʹ଎͍

    View Slide

  10. 1)1ͷ஌ΒΕ͟Δੑೳվળ
    ❖ 01DBDIF֦ுͳͩ͠ͱࠩ͸ഒఔ౓

    View Slide

  11. ͜Ε΄Ͳͷ଎౓͕ࠩ
    ͳͥੜ·ΕΔͷ͔ʁ

    View Slide

  12. 1)1͸Ͳ͏࣮ߦ͞Ε͍ͯΔ͔ʁ

    ❖ 1)1εΫϦϓτ͸ͦͷ··Ͱ͸࣮ߦͰ͖ͳ͍
    ❖ PQDPEFྻʹίϯύΠϧͯ͠;FOE7.্Ͱ࣮ߦ͢Δ
    ίϯύΠϧॲཧ
    7.࣮ߦ
    PQDPEF
    1)1

    View Slide

  13. ;FOE7.ͱ͸
    ❖ PQDPEFʢ7.໋ྩʣΛ࣮ߦ͢ΔԾ૝$16࣮૷
    ❖ ೋஈߏ͑ͷ࣮૷
    ❖ εΫϦϓτݴޠ͔ΒPQDPEF΁ͷม׵ث
    ❖ PQDPEFͷ࣮ߦث

    View Slide

  14. 1)1͸Ͳ͏࣮ߦ͞Ε͍ͯΔ͔ʁ

    ❖ 01DBDIF͸PQDPEFΛΩϟογϡ͢Δ
    ❖ ճ໨Ҏ߱ͷ࣮ߦ࣌ʹίϯύΠϧॲཧΛεΩοϓͰ͖Δ
    ίϯύΠϧॲཧ
    7.࣮ߦ
    ࠷దԽ
    PQDPEF
    PQDPEF
    Ωϟογϡ
    PQDPEF
    1)1

    View Slide

  15. ௨ৗͷ഑ྻߏங
    ❖ ௨ৗɺ഑ྻߏங͸PQDPEFྻʹίϯύΠϧ͞ΕΔ
    ❖ ʮ഑ྻʹཁૉΛ௥Ճ͢Δʯ͕ݸͷPQDPEF
    ❖ ສཁૉͷ഑ྻͳΒ7.໋ྩΛສճ࣮ߦ
    1)1ϓϩηε ڞ༗ϝϞϦ
    ʢ01DBDIF؅ཧʣ
    ഑ྻߏஙͷPQDPEF
    ʜ
    ഑ྻͷ࣮ମ
    ഑ྻߏங

    View Slide

  16. 1)1ͷJNNVUBCMFBSSBZ
    ❖ 1)1Ͱ͸JNNVUBCMFBSSBZͷ࣮ମ͕Ωϟογϡର৅
    ❖ 7.໋ྩΛ࣮ߦͤͣʹߏஙࡁΈ഑ྻʹΞΫηεͰ͖Δ
    ڞ༗ϝϞϦ
    ʢ01DBDIF؅ཧʣ
    ഑ྻͷ࣮ମ
    1)1ϓϩηε
    ෆม഑ྻ΁ͷΞΫηε

    View Slide

  17. 1)1ͷJNNVUBCMFBSSBZ
    ❖ 1)1Ͱ͸JNNVUBCMFBSSBZͷ࣮ମ͕Ωϟογϡର৅
    ❖ ϓϩηεؒͰ࣮ମΛڞ༗Ͱ͖ΔͷͰলϝϞϦ
    ڞ༗ϝϞϦ
    ʢ01DBDIF؅ཧʣ
    ഑ྻͷ࣮ମ
    1)1ϓϩηε 1)1ϓϩηε
    1)1ϓϩηε

    View Slide

  18. ·ͱΊ
    ❖ ࠷ۙͷ1)1ͩͱJNNVUBCMFBSSBZ͸ߴ଎ɾলϝϞϦ
    ❖ શΩʔɾશཁૉ͕Ϧςϥϧͷ഑ྻʹಛԽͨ͠࠷దԽ
    ❖ ഑ྻͷ࣮ମ͕01DBDIFͷΩϟογϡର৅
    ❖ શ1)1ϓϩηεͰಉ࣮͡ମΛڞ༗
    ❖ 1)1ͷ಺෦࣮૷ʹڵຯΛ࣋ͬͯ΋Β͑ͨΒخ͍͠Ͱ͢
    ❖ 4MBDLάϧʔϓQIQVTFSTKBͰօ͞ΜϚχΞοΫͳ࿩Λ
    ͯͨ͠Γ͠·͢ɺ͓קΊͰ͢ʢṖͷએ఻ʣ

    View Slide

  19. ͝੩ௌ
    ͋Γ͕ͱ͏
    ͍͟͝·ͨ͠

    View Slide

  20. ೦ͷͨΊ஫ҙ
    ❖ ͜ͷखͷੑೳൺֱΛਅʹड͚͗͢ͳ͍ͰԼ͍͞😉
    ❖ ϘτϧωοΫҎ֎Λ଎ͯ͘͠΋શମ΁ͷӨڹ͸ܰඍ
    ❖ େ఍ͷݱ৔Ͱ͸ੑೳΑΓอकੑ͕େࣄ

    View Slide

  21. ิ଍ςετ؀ڥͷৄࡉ
    ❖ .BDNJOJ

    ❖ 04NBD04.PKBWF
    ❖ $16()[*OUFM$PSFJ
    ❖ NFNPSZ(#
    ❖ OHJOYQIQGQN

    View Slide

  22. 201DBDIF༗ޮͰ΋ॳճΞΫηε࣌͸ॏ͍ΑͶʁ
    ❖ :FT
    ❖ ॳճΞΫηεͩͱίϯύΠϧॲཧ͔Β૸ΔͷͰɺ഑ྻߏ
    ங͢Δͷʹཁૉ਺෼ͷPQDPEF࣮ߦ͕ඞཁͰ͢
    ❖ ॳճΞΫηε࣌ʹߏஙͨ͠഑ྻͷ࣮ମ͕Ωϟογϡ͞Ε
    ͯճ໨Ҏ߱͸࢖͍·Θ͞Ε·͢

    View Slide

  23. 21)1ͷ഑ྻ͸શ෦Ωϟογϡର৅ʁ
    ❖ Ωʔ͔஋ʹͭͰ΋ม਺͕ೖ͍ͬͯͨΒPQDPEFྻʹί
    ϯύΠϧ͞Εͯෆม഑ྻͷԸܙ͸ड͚ΒΕ·ͤΜ
    ❖ ڊେ഑ྻͳΜ͚ͩͲෆม͡Όͳ͍৔߹ɺෆม෦෼͚ͩ
    ผ഑ྻʹ੾Γग़͢ͱੑೳվળʹͳΔՄೳੑ͕͋Γ·͢

    View Slide

  24. 2ෆม഑ྻΛॻ͖׵͑ͨΒͲ͏ͳΔʁ
    ❖ ίϐʔΦϯϥΠτʹΑΓίϐʔ͞Εͯॻ͖׵ΘΓ·͢
    ❖ ෆมʹڞ༗ϝϞϦ্ͷΩϟογϡͷѻ͍
    ❖ ϓϩάϥϚ໨ઢͰͷ࢖͍উख͸Կ΋มΘΒͳ͍

    View Slide