0

I can not find any article about this. Probably very basic question. So basically out of curiosity I would like to know if creating an array with no empty values is better for performance/memory than with empty/null values.

[0] => array('color' => 'red')
 etc

[0] => array('type' => NULL, 'color' => 'red')
 etc
3
  • 1
    you could test this by parsing the load time of the page. Commented Aug 4, 2020 at 20:42
  • 1
    Less items in the array would mean less memory and faster operations. If the item is NULL or FALSE or 0 it does not mean the key is not there. It's in the internal hash map. Commented Aug 4, 2020 at 20:42
  • The only internal optimization that PHP does is 0-indexed consecutive arrays vs any other indexes. The 0 indexed consecutive numbered array is stored slightly differently and is slightly faster. Commented Aug 4, 2020 at 20:44

1 Answer 1

1

From a performance perspective, I'd say, there might be minimal effect on memory consumption but I'd also assume this can be neglected.

From a programming perspective, I'd say: "it depends". As a rule of thumb, I'd say "Don't create empty fields, but when they are already there, don't forcefully remove them".

DISCLAIMER: SO does not like "opinion-based posts". Please take this with the needed grain of salt as this only reflects my opinion and it's not applying to all problems and situations.

In my opinion, there are two cases:

First: You are using the array for further processing.

When you know you need attributes to be present for further processing, it might be (dependent on the kind of access) good to have empty values. In this case, you can at least be sure that the key of the array is present. This should in fact not prevent you from creating classes/objects which are most likely a much better solution to this than arrays. This will mostly apply to data retrieved from DB directly (without ORM mappers) or some sort of partially processed data.

Second: You are passing information.

When you pass information over a network or serialize somewhere, every byte counts. In this case, it might be a good idea to sanitize the array so you can save these bytes. In this case, there might be also an exception (Like REST interfaces, they are "contracts" and the content/structure of the resources should not change just because there are null values).

Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.