2011-01-17 11 views
12

HI tam,PHP - pobierz tablice rekordów według zakresu indeksu

Czy istnieje jakaś natywna funkcja PHP, która zwraca zakres rekordów z tablicy na podstawie początku i końca indeksu?

tj .:

array(0 => 'a', 1 => 'b', 2 => 'c', 3 => 'd'); 

teraz to, że jak tylko zwrócić rekordy pomiędzy indeksie 1 i 3 (b, c, d).

Każdy pomysł?

+3

to qu estion jest synonimem "PHP array_slice" http://us3.php.net/manual/en/function.array-slice.php – dreftymac

Odpowiedz

20

Nie można tego zrobić za pomocą np. array_slice?

$a = array(0 => 'a', 1 => 'b', 2 => 'c', 3 => 'd'); 
array_slice($a, 1, 3); 
11

nie jest zadaniem dla array_slice

array array_slice (array $array , int $offset [, int $length [, bool $preserve_keys = false ]])

przykład:

 
$input = array("a", "b", "c", "d", "e"); 

$output = array_slice($input, 2);  // returns "c", "d", and "e" 
$output = array_slice($input, -2, 1); // returns "d" 
$output = array_slice($input, 0, 3); // returns "a", "b", and "c" 

// note the differences in the array keys 
print_r(array_slice($input, 2, -1)); 
print_r(array_slice($input, 2, -1, true)); 
+0

docenić różnorodność przykładów –

-2
$array1 = array(1,2,3,4,5,6,23,24,26,21,12); 

    foreach(range ($array1[0],$array1[5]) as $age){ 
     echo "Age: {$age}<br />"; 
    } 

należy uzyskać następujące dane wyjściowe:

Wiek: 1

Wiek: 2

Wiek: 3

Wiek: 4

Wiek: 5

Wiek: 6

+1

Downvote. Jest to odpowiedź niskiej jakości, która nie będzie przenośna w następujących po sobie przypadkach. W tym [demo] (http://sandbox.onlinephpfunctions.com/code/e8b81d0e2d721fdfaede35b520d1304c6d647a6c) można zauważyć, że twoja metoda nie działa marnie, gdy są luki w wartościach tablicy. 'range()' wytwarza wartości tam, gdzie nie ma żadnych wartości w tablicy. Oto usterka z użyciem własnego wejścia: [Demo2] (http://sandbox.onlinephpfunctions.com/code/c5c9f746346168de06cac24c5429dc9a4f00d2d0) Proszę usunąć tę odpowiedź. 'array_slice()' i 'array_intersect_key()' są najbardziej sensownymi metodami. – mickmackusa

1

Stosując array_intersect_key

$myArray = array(0 => 'a', 1 => 'b', 2 => 'c', 3 => 'd'); 
$arrayRange = array('1', '2', '3'); 

// this can also be used if you have integer only array values 
// $arrayRange = range(1,3); 

$newArray = array_intersect_key($myArray, array_flip($arrayRange)); 

print_r($newArray); // output: Array ([1] => b [2] => c [3] => d)