Retrieving array values by range of keys
Retrieving array values by range of keys
am 15.10.2007 15:09:18 von wildernesscat
Hello there!
Suppose I have an associative array that looks like this:
$arr['alpha_1'] = 'some value';
$arr['alpha_3'] = 'some value';
$arr['alpha_4'] = 'some value';
$arr['beta_2'] = 'some value';
$arr['beta_4'] = 'some value';
$arr['beta_6'] = 'some value';
$arr['gamma_1'] = 'some value';
$arr['gamma_5'] = 'some value';
$arr['gamma_6'] = 'some value';
$arr['gamma_7'] = 'some value';
Let's assume that the array is reasonably large (hundreds of entries).
Is there an efficient way of getting all the items whose key starts
with 'beta'? (without doing a foreach/strncmp loop?)
Thanks in advance,
Danny
Re: Retrieving array values by range of keys
am 15.10.2007 15:17:32 von Captain Paralytic
On 15 Oct, 14:09, WildernessCat wrote:
> Hello there!
>
> Suppose I have an associative array that looks like this:
> $arr['alpha_1'] = 'some value';
> $arr['alpha_3'] = 'some value';
> $arr['alpha_4'] = 'some value';
> $arr['beta_2'] = 'some value';
> $arr['beta_4'] = 'some value';
> $arr['beta_6'] = 'some value';
> $arr['gamma_1'] = 'some value';
> $arr['gamma_5'] = 'some value';
> $arr['gamma_6'] = 'some value';
> $arr['gamma_7'] = 'some value';
>
> Let's assume that the array is reasonably large (hundreds of entries).
>
> Is there an efficient way of getting all the items whose key starts
> with 'beta'? (without doing a foreach/strncmp loop?)
>
> Thanks in advance,
> Danny
Something like:
preg_grep('/^beta/',array_keys($arr));
should give you all the keys that start with 'beta'
Re: Retrieving array values by range of keys
am 15.10.2007 15:37:14 von Bucky Kaufman
"Captain Paralytic" wrote in message
news:1192454252.346643.76180@i13g2000prf.googlegroups.com...
> On 15 Oct, 14:09, WildernessCat wrote:
>> Hello there!
>>
>> Suppose I have an associative array that looks like this:
>> $arr['alpha_1'] = 'some value';
>> $arr['alpha_3'] = 'some value';
>> $arr['alpha_4'] = 'some value';
>> $arr['beta_2'] = 'some value';
>> $arr['beta_4'] = 'some value';
>> $arr['beta_6'] = 'some value';
>> $arr['gamma_1'] = 'some value';
>> $arr['gamma_5'] = 'some value';
>> $arr['gamma_6'] = 'some value';
>> $arr['gamma_7'] = 'some value';
>>
>> Let's assume that the array is reasonably large (hundreds of entries).
>>
>> Is there an efficient way of getting all the items whose key starts
>> with 'beta'? (without doing a foreach/strncmp loop?)
>>
>> Thanks in advance,
>> Danny
>
> Something like:
>
> preg_grep('/^beta/',array_keys($arr));
>
> should give you all the keys that start with 'beta'
What does the return value look like - array? string?
Re: Retrieving array values by range of keys
am 15.10.2007 15:43:54 von wildernesscat
On Oct 15, 3:17 pm, Captain Paralytic wrote:
> On 15 Oct, 14:09, WildernessCat wrote:
>
>
>
> > Hello there!
>
> > Suppose I have an associative array that looks like this:
> > $arr['alpha_1'] = 'some value';
> > $arr['alpha_3'] = 'some value';
> > $arr['alpha_4'] = 'some value';
> > $arr['beta_2'] = 'some value';
> > $arr['beta_4'] = 'some value';
> > $arr['beta_6'] = 'some value';
> > $arr['gamma_1'] = 'some value';
> > $arr['gamma_5'] = 'some value';
> > $arr['gamma_6'] = 'some value';
> > $arr['gamma_7'] = 'some value';
>
> > Let's assume that the array is reasonably large (hundreds of entries).
>
> > Is there an efficient way of getting all the items whose key starts
> > with 'beta'? (without doing a foreach/strncmp loop?)
>
> > Thanks in advance,
> > Danny
>
> Something like:
>
> preg_grep('/^beta/',array_keys($arr));
>
> should give you all the keys that start with 'beta'
Yes, it sure looks more compact in the code, but the question is
whether it's more efficient? I have a gut feeling that there is no
efficient way.
By the way I forgot to mention that the array is not sorted.
Re: Retrieving array values by range of keys
am 15.10.2007 15:45:50 von Captain Paralytic
On 15 Oct, 14:37, "Sanders Kaufman" wrote:
> "Captain Paralytic" wrote in message
>
> news:1192454252.346643.76180@i13g2000prf.googlegroups.com...
>
>
>
>
>
> > On 15 Oct, 14:09, WildernessCat wrote:
> >> Hello there!
>
> >> Suppose I have an associative array that looks like this:
> >> $arr['alpha_1'] = 'some value';
> >> $arr['alpha_3'] = 'some value';
> >> $arr['alpha_4'] = 'some value';
> >> $arr['beta_2'] = 'some value';
> >> $arr['beta_4'] = 'some value';
> >> $arr['beta_6'] = 'some value';
> >> $arr['gamma_1'] = 'some value';
> >> $arr['gamma_5'] = 'some value';
> >> $arr['gamma_6'] = 'some value';
> >> $arr['gamma_7'] = 'some value';
>
> >> Let's assume that the array is reasonably large (hundreds of entries).
>
> >> Is there an efficient way of getting all the items whose key starts
> >> with 'beta'? (without doing a foreach/strncmp loop?)
>
> >> Thanks in advance,
> >> Danny
>
> > Something like:
>
> > preg_grep('/^beta/',array_keys($arr));
>
> > should give you all the keys that start with 'beta'
>
> What does the return value look like - array? string?- Hide quoted text -
>
> - Show quoted text -
Why ask me when you can just go to:
http://uk3.php.net/manual/en/function.preg-grep.php
and read it there?
Note that this won't solve the OP's whole problem as he wants the
values rather than the keys, but it's a start.
Re: Retrieving array values by range of keys
am 15.10.2007 16:19:01 von Bucky Kaufman
"Captain Paralytic" wrote in message
news:1192455950.972135.168750@i38g2000prf.googlegroups.com.. .
> On 15 Oct, 14:37, "Sanders Kaufman" wrote:
>> > preg_grep('/^beta/',array_keys($arr));
>>
>> > should give you all the keys that start with 'beta'
>>
>> What does the return value look like - array? string?- Hide quoted
>> text -
>>
>> - Show quoted text -
>
> Why ask me when you can just go to:
> http://uk3.php.net/manual/en/function.preg-grep.php
> and read it there?
Because, after a bout with meningitis, my brain doesn't work as well as it
used to.
I read one page after another - and have no idea what I read.
But when I discuss - it registers.
Re: Retrieving array values by range of keys
am 15.10.2007 17:05:29 von Captain Paralytic
On 15 Oct, 14:43, WildernessCat wrote:
> On Oct 15, 3:17 pm, Captain Paralytic wrote:
>
>
>
>
>
> > On 15 Oct, 14:09, WildernessCat wrote:
>
> > > Hello there!
>
> > > Suppose I have an associative array that looks like this:
> > > $arr['alpha_1'] = 'some value';
> > > $arr['alpha_3'] = 'some value';
> > > $arr['alpha_4'] = 'some value';
> > > $arr['beta_2'] = 'some value';
> > > $arr['beta_4'] = 'some value';
> > > $arr['beta_6'] = 'some value';
> > > $arr['gamma_1'] = 'some value';
> > > $arr['gamma_5'] = 'some value';
> > > $arr['gamma_6'] = 'some value';
> > > $arr['gamma_7'] = 'some value';
>
> > > Let's assume that the array is reasonably large (hundreds of entries).
>
> > > Is there an efficient way of getting all the items whose key starts
> > > with 'beta'? (without doing a foreach/strncmp loop?)
>
> > > Thanks in advance,
> > > Danny
>
> > Something like:
>
> > preg_grep('/^beta/',array_keys($arr));
>
> > should give you all the keys that start with 'beta'
>
> Yes, it sure looks more compact in the code, but the question is
> whether it's more efficient? I have a gut feeling that there is no
> efficient way.
>
> By the way I forgot to mention that the array is not sorted.- Hide quoted text -
>
> - Show quoted text -
The fact that it is not sorted shouldn't matter. As far as efficiency
goes, it is all handled by a BIF as opposed to interpreted code, so it
has the opportunity to be more efficient.
Now, I don't know how you want to use the results but this leaves you
with an array containing all the keys that you need for later use.
Re: Retrieving array values by range of keys
am 16.10.2007 06:37:19 von wildernesscat
On Oct 15, 5:05 pm, Captain Paralytic wrote:
> On 15 Oct, 14:43, WildernessCat wrote:
>
>
>
> > On Oct 15, 3:17 pm, Captain Paralytic wrote:
>
> > > On 15 Oct, 14:09, WildernessCat wrote:
>
> > > > Hello there!
>
> > > > Suppose I have an associative array that looks like this:
> > > > $arr['alpha_1'] = 'some value';
> > > > $arr['alpha_3'] = 'some value';
> > > > $arr['alpha_4'] = 'some value';
> > > > $arr['beta_2'] = 'some value';
> > > > $arr['beta_4'] = 'some value';
> > > > $arr['beta_6'] = 'some value';
> > > > $arr['gamma_1'] = 'some value';
> > > > $arr['gamma_5'] = 'some value';
> > > > $arr['gamma_6'] = 'some value';
> > > > $arr['gamma_7'] = 'some value';
>
> > > > Let's assume that the array is reasonably large (hundreds of entries).
>
> > > > Is there an efficient way of getting all the items whose key starts
> > > > with 'beta'? (without doing a foreach/strncmp loop?)
>
> > > > Thanks in advance,
> > > > Danny
>
> > > Something like:
>
> > > preg_grep('/^beta/',array_keys($arr));
>
> > > should give you all the keys that start with 'beta'
>
> > Yes, it sure looks more compact in the code, but the question is
> > whether it's more efficient? I have a gut feeling that there is no
> > efficient way.
>
> > By the way I forgot to mention that the array is not sorted.- Hide quoted text -
>
> > - Show quoted text -
>
> The fact that it is not sorted shouldn't matter. As far as efficiency
> goes, it is all handled by a BIF as opposed to interpreted code, so it
> has the opportunity to be more efficient.
>
> Now, I don't know how you want to use the results but this leaves you
> with an array containing all the keys that you need for later use.
Thanks. I think I'll go with this one.
Re: Retrieving array values by range of keys
am 16.10.2007 09:55:41 von wildernesscat
On Oct 15, 5:05 pm, Captain Paralytic wrote:
> On 15 Oct, 14:43, WildernessCat wrote:
>
>
>
> > On Oct 15, 3:17 pm, Captain Paralytic wrote:
>
> > > On 15 Oct, 14:09, WildernessCat wrote:
>
> > > > Hello there!
>
> > > > Suppose I have an associative array that looks like this:
> > > > $arr['alpha_1'] = 'some value';
> > > > $arr['alpha_3'] = 'some value';
> > > > $arr['alpha_4'] = 'some value';
> > > > $arr['beta_2'] = 'some value';
> > > > $arr['beta_4'] = 'some value';
> > > > $arr['beta_6'] = 'some value';
> > > > $arr['gamma_1'] = 'some value';
> > > > $arr['gamma_5'] = 'some value';
> > > > $arr['gamma_6'] = 'some value';
> > > > $arr['gamma_7'] = 'some value';
>
> > > > Let's assume that the array is reasonably large (hundreds of entries).
>
> > > > Is there an efficient way of getting all the items whose key starts
> > > > with 'beta'? (without doing a foreach/strncmp loop?)
>
> > > > Thanks in advance,
> > > > Danny
>
> > > Something like:
>
> > > preg_grep('/^beta/',array_keys($arr));
>
> > > should give you all the keys that start with 'beta'
>
> > Yes, it sure looks more compact in the code, but the question is
> > whether it's more efficient? I have a gut feeling that there is no
> > efficient way.
>
> > By the way I forgot to mention that the array is not sorted.- Hide quoted text -
>
> > - Show quoted text -
>
> The fact that it is not sorted shouldn't matter. As far as efficiency
> goes, it is all handled by a BIF as opposed to interpreted code, so it
> has the opportunity to be more efficient.
>
> Now, I don't know how you want to use the results but this leaves you
> with an array containing all the keys that you need for later use.
Thanks! I think I'll go with this option.