views:

100

answers:

2

How can i unset a range of keys between say 70 to 80 in an array like this?

[63] => Computer Science and Informatics
[64] => Dentistry
[65] => Development Studies
[66] => Drama, Dance and Performing Arts
[67] => Earth Systems and Environmental Sciences
[68] => Economics and Econometrics
[69] => Education
[70] => Electrical and Electronic Engineering
[71] => English Language and Literature
[72] => Epidemiology and Public Health
[73] => European Studies
[74] => French
[75] => General Engineering and Mineral & Mining Engineering
[76] => Geography and Environmental Studies
[77] => Geography and Environmental Studies
[78] => German, Dutch and Scandinavian Languages
[79] => Health Services Research
[80] => History
[81] => History of Art, Architecture and Design
[82] => Iberian and Latin American Languages
[83] => Infection and Immunology
[84] => Italian
[85] => Law
[86] => Library and Information Management
[87] => Linguistics
[88] => Mechanical, Aeronautical and Manufacturing Engineering
[89] => Metallurgy and Materials
[90] => Middle Eastern and African Studies
+2  A: 

You can try array_slice

$return = array_slice($original, 0, 60)

then

$return = $return+array_slice($original, 70)

or

array_splice

$return = array_splice($original, 60, 10)
leChuck
This works, but it's really inefficient. You're creating 3 arrays in addition to the one you start with.
ryeguy
Given the fact that it is a fairly small data set, I would probably go with this solution, I don't think its *efficiency* is going to have any perceptible impact on performance, plus it is readable and somewhat elegant. Voted up.
karim79
+1 for array_splice
Gordon
+1 for array_splice again
Alex
+4  A: 

There isn't really a shortcut to this:

for ($i = 70; $i <= 80; $i++)  
    unset($array[$i]);
ryeguy
+1 for this one too, its a simpler solution and gets the job done the same
Alex
It's kind of dissapointing, all the PHP coders who always ask if there's a function to do something bizarrely niche, when a for()/foreach() loop does it just fine.
TravisO