NoOne
NoOne

Reputation: 4091

Is there a simple, fast array in PHP?

I need a simple array that uses minimum memory in PHP. I want the exact C++ equivalent of an allocated block of memory where you can iterate using indices only. I found out that arrays in PHP use more memory than let's say : size*type_size (I guess for storing key values, etc). Is there anything more unsophisticated and simple ?

EDIT:

Thank you all.

Yes, I thought the idea of the string immediately after posting the question. I needed a boolean array, so that seemed to work. It's just a little slower to get/set it's characters.

Judy arrays also seem interesting but I haven't tried it yet.

I've tried SplFixedArray but it seemed that it used the same amount of memory to normal arrays (except if I've missed sth on the way).

Upvotes: 8

Views: 5344

Answers (5)

jeremyFreeAgent
jeremyFreeAgent

Reputation: 132

The Judy library and its PHP extension is a very good way to use array in PHP.

Upvotes: 0

mario
mario

Reputation: 145492

I need a simple array that uses minimum memory in PHP.

The speediest array type in PHP is actually the string. It also is the least memory-hungry; the closest you get to a C equivalent data structure.

 $byte = ord($string[123]);

It's indexed. But the limitation is of course that it only works on byte values. (You didn't exactly elaborate on your needs. So here is your generic answer.)

As alternative to the fixed length SplFixedArray PHP also has an extension for Judy arrays. They are associative, but conserve memory in comparison to PHPs; and are supposedly a bit speedier. (Doesn't make much sense in a scripting language to care about that, but hey.)

Upvotes: 9

chx
chx

Reputation: 11780

http://php.net/manual/en/class.splfixedarray.php

The SplFixedArray class provides the main functionalities of array. The main differences between a SplFixedArray and a normal PHP array is that the SplFixedArray is of fixed length and allows only integers within the range as indexes. The advantage is that it allows a faster array implementation.

Closest you can get.

Upvotes: 2

str
str

Reputation: 44999

You could use the SplFixedArray which seems to meet your demands.

Upvotes: 10

Your Common Sense
Your Common Sense

Reputation: 157919

You have no choice.
All the arrays in PHP are the same ordred maps anyway.

If you experience any memory issues with the arrays, I'd sugget to use some more relevant technology.
PHP is designed to process relatively small amouints of data per user request to web-server.

Upvotes: 1

Related Questions