入力配列に連続したキーがあると仮定すると、次のことだけではありません。
$newArray = array_slice($array, $key1, $key2 + 1);
編集
ちょっと待ってください、それは次の場合にのみ機能します$key1 = 0
、代わりにこれを試してください:
$newArray = array_slice($array, $key1, ($key2 - $key1) + 1);
これはまだそれを必要とし$key1 < $key2
ます、しかしあなたが言うことから私はそれが常にそうなると想像します。
別の編集
配列をループせずにこれを実現するには(もちろん最も簡単な方法です)、文字列キーを数値に変換して、で使用できるようにする必要がありますarray_slice()
。これは機能します:
$var = array("one"=>"one","two"=>"two","three"=>"three","four"=>"four");
$key1 = 'one';
$key2 = 'three';
$keys = array_keys($var);
$key1index = array_search($key1, $keys);
$key2index = array_search($key2, $keys);
$newArray = array_slice($var, $key1index, ($key2index - $key1index) + 1, TRUE);
print_r($newArray);