2013-05-22 11 views
12

funzione PHP array_slice() ritorna sequenza di elementi da offset come questo:Come suddividere un array per chiave, non per offset?

// sample data 
$a = array('a','b','c',100=>'aa',101=>'bb',102=>'cc'); 

// outputs empty array because offset 100 not defined 
print_r(array_slice($a,100)); 

argomenti delle funzioni attuali:

array_slice ($array, $offset, $length, $preserve_keys) 

ho bisogno di qualcosa di simile:

array_slice ($array, **$key**, $length, $preserve_keys) 

Quello stampa questo come sopra print_r:

array (
    100 => aa, 
    101 => bb, 
    102 => cc 
) 

risposta

13

Per trovare l'offset della chiave, utilizzare array_search() per cercare tra i tasti, che è possibile recuperare con array_keys(). array_search() restituirà FALSE quando la chiave specificata (100) non è presente nell'array ($a).

$key = array_search(100, array_keys($a), true); 
if ($key !== false) { 
    $slice = array_slice($a, $key, null, true); 
    var_export($slice); 
} 

Stampe:

array (
    100 => 'aa', 
    101 => 'bb', 
    102 => 'cc', 
) 
Problemi correlati