• finn@lemmy.world
    link
    fedilink
    arrow-up
    38
    arrow-down
    2
    ·
    2 年前

    Ever wondered about the array_fill function? It can be baffling. Try filling an array with a negative index:

    array_fill(-5, 4, 'test');

    Many languages would throw an error, but PHP? It’s perfectly fine with this and you get an array starting at index -5. It’s like PHP is the Wild West of array indexing!

    • marcos@lemmy.world
      link
      fedilink
      arrow-up
      18
      ·
      2 年前

      Well, many languages are perfectly ok with negative array indexes.

      But all of those languages are either statically typed ones where you declare the boundings with the array, or php.

      • finn@lemmy.world
        link
        fedilink
        arrow-up
        13
        ·
        2 年前

        Absolutely, many languages do allow negative indices. The intriguing part about PHP, though, is that its ‘arrays’ are actually ordered maps (or hash tables) under the hood. This structure allows for a broader range of keys, like our negative integers or even strings. It’s a unique design choice that sets PHP apart and allows for some really interesting usage patterns. Not your everyday array, right?

        • Funwayguy@lemmy.world
          link
          fedilink
          arrow-up
          4
          ·
          2 年前

          I’ve been working with PHP for two years now (not by choice) but I still sometimes forget the weird behaviours these not-arrays cause. Recently I was pushing/popping entries in a queue and it fucked the indexing. I had programmed it like I would any other sane language and it wasn’t until I was stepping through the bug I realised I had forgotten about this.

          I hate PHP for so many more reasons. It baffles me why anyone would think it was a good idea to design it this way. Thankfully my current job involves actively burning it down and preparing for its replacement.