Fatiando arrays no PHP

Em: 28/04/2008 Tags: PHP Comentários (0) Referencie do seu blog (Trackback)

Apesar dos anos de uso da linguagem, não me lembro da última vez em que precisei pegar um pedaço exato de um array (como os N primeiros ou termos, por exemplo). Mas eis que hoje voltei a precisar disso, e isto em PHP é inválido:

$chars = array('c','a','i','o'); 
$chars[0,2];

Não importa o sentido que você possa ter pensado em atribuir à segunda linha de código, por algum motivo essa sintaxe não é suportada. Contente-se, portanto, com array_slice, que faz o mesmo serviço:

$chars = array('c','a','i','o'); 
$slice = array_slice($chars, 0, 2);
print_r($slice);

A saída do programa é bem auto-explicativa:

Array
(
    [0] => c
    [1] => a
)

A função array_slice, portanto, devolve uma fatia de um array, sem modificar o original. Caso nossa intenção seja alterar um pedaço de um array por qualquer outro valor, então podemos usar sua função irmã, array_splice:

$chars = array('c','a','i','o'); 
array_splice($chars, 0, 3, 'hell');
print_r($chars);

Esse programa terá a seguinte saída:

Array
(
    [0] => hell
    [1] => o
)

Note que array_splice irá alterar o array original.

Consulte a documentação do PHP para maiores informações: