Skip to content
Insights

Never* use arrays

keynote

Larry Garfield is a prominent speaker in the PHP community and has a lot of experience delivering talks. He’s one of the many top speakers that attended this conference. And, well, the message is quite clear: never* use arrays.
(*) in public

Why? Because it’s kind of a hack. Because values are not guaranteed to be of the same type. Because they have poor performance. And because PHP doesn’t have them... *gasp*

What Larry means is that the definition of an “array” is an ordered sequence of values of the same type, while in PHP arrays are associative arrays without type guarantees. Numeric arrays, where you don’t provide the key in the assignment, are a hack and behave weird (the keys are not always sequential).

Then he mentioned one of the greatest bugs of the last few years, namely Drupageddon (2014), which was also due to some code expecting numerical keys, but was (in certain conditions) causing an SQL injection risk.

So… What’s better? Purpose-built data structures! Do you know where he’s getting at? Yep, objects of course. And that’s where PHP has already everything you need. Did you know there’s an ArrayObject? Extend it to create a “TypedArray”. Or use the IteratorAggregate, Countable and Traversable interfaces to create sequences, sets, etc. They can be made to be unique, ordered, typed and everything you want.

But objects are slower, right? Nope…

Technique

Runtime (s)

Memory (bytes)

Associative array

9.4311 (n/a)

541,450,384 (n/a)

stdClass

11.2173 (+18.94%)

589,831,120 (+8.94%)

Public properties

8.2172 (-12.87%)

253,831,584 (-53.12%)

Private properties

11.0881 (+17.57%)

253,833,000 (-53.12%)

Anonymous class

8.1095 (-14.07%)

253,832,368 (-53.12%)

Check Larry’s slides for the benchmark he used, but the conclusion above is mind-blowing. 

Related

This article is part of the PHPBNL20 blogs

More insights

  • SymfonyCon 2024: code in harmony

    The 2024 edition took place in beautiful Vienna, so one of our experts went to check it out. A quick night train journey and some culture later, they were ready to focus on two days packed with Symfony. What insights did we bring back as souvenirs? You can read all about it in this report! 

    SymfonyCon 2024: code in harmony
  • Stepping into something new: Lore’s journey at Codana

    Lore Vanderlinden tells you all about her journey at Codana. She combines her technical background as a frontend developer with a passion for entrepreneurship in her role as project manager. Find out how by reading the blog!

    Stepping into something new: Lore’s journey at Codana
  • Qodo: an AI-copiloot for coding and testing

    We recently came across Qodo: a tool that uses Artificial Intelligence (AI) to help us code and test. In this blog post, you can read all about our initial experiences. 

    Qodo: an AI-copiloot for coding and testing
  • Lunar and Codana merge into one brand

    Lunar and Codana join hands and from today will continue together under the Codana brand name. This merger creates a digital product studio with more than 30 experts and a clear ambition: to become a leading player in the Belgian and European market.

    Lunar and Codana merge into one brand
  • From Intern to Digital Project Manager: My Journey at Codana

    Jelmer Krux tells you all about his journey at Codana. He joined our team fresh out of university and combines the roles of digital project manager and UX/UI Designer. How? Find out by reading his story in this blog! 

    From Intern to Digital Project Manager: My Journey at Codana
  • Cross-platform applicaties with React Native

    Never before has developing native mobile applications been as accessible as it is today. At Codana, we do this by using the React Native, an open-source framework developed by Meta.

    Cross-platform applicaties with React Native