2011-07-14 43 views
6

Sử dụng PHP foreach làm cách nào tôi chỉ nhận được 9 kết quả đầu tiên trong một nghiên cứu và chỉ có 9 kết quả đầu tiên trong một nghiên cứu khác.mảng PHP foreach nhận được 9 kết quả đầu tiên sau đó thứ hai 9

Something như

foreach {$ cửa hàng [1-9] như $ cửa hàng) {

foreach {$shops[10 - 18] as 
$shop) { 

Bất kỳ ý tưởng?

Marvelous

+0

'array_slice' là những gì bạn muốn. – thetaiko

+0

@Robin Knight bạn có thể thực hiện một chút nỗ lực bạn đặt một câu hỏi tương tự cách đây vài phút – chafank

+0

http://php.net/manual/en/function.array-slice.php bạn có thể nhận thêm tùy chọn – jeni

Trả lời

9

Sử dụng array_slice():

foreach(array_slice($shops,0,9) as $shop){ 
    // etc. 
} 

foreach(array_slice($shops,9,9) as $shop){ 
    // etc. 
} 
+0

Cảm ơn, hoàn hảo –

+0

Câu hỏi phụ: làm thế nào bạn có thể làm điều này với một mảng có độ dài không xác định? 1, 25, 122, không chỉ 18? – bafromca

+0

Bạn có thể dễ dàng kiểm tra số() để có được kích thước của mảng. Nhưng, nếu bạn đang cố gắng chia nó thành các khối có kích thước bằng nhau và modulo chunksize! = 0, bạn sẽ phải có logic để xử lý đoạn cuối cùng có kích thước khác. Tuy nhiên, không có gì trong cuộc gọi array_slice như được viết sẽ bị hỏng. Trong trường hợp ví dụ của tôi ở trên, nó sẽ trả về tối đa 9 mục cho mỗi đoạn. –

3

Sử dụng một vòng lặp for để thay thế?

for (int $i = 0; $i < 9; $i++) 
{ 
    $shop = $shops[$i]; 
} 

Sau đó, bạn có thể làm khác với $i = 10..19. Nếu bạn phải sử dụng foreach thì có bộ đếm bạn tăng và break; hoặc sử dụng array_slice như những người khác đã đề xuất.

+0

điều này có thể làm việc nếu không có gì để làm với giá trị trong mảng – Wilf

0

sử dụng array_slice bạn có thể chia mảng của bạn thành hai sau đó bạn có thể làm điều này

$my_array = array('1','2',...,'18'); 

$first_array = array_slice($my_array,0,9); 
$second_array = array_slice($my_array,9,18); 
0

Sử dụng một vòng lặp for để thay thế.

for ($i = 0; $i < 9; $i++) 
{ 
    $shop = $shops[$i]; 
} 

for ($i = 9; $i < 18; $i++) 
{ 
    $shop = $shops[$i]; 
} 
1

Làm thế nào về

foreach (array_slice($shops, 0, 9) as $shop) { 
    ... 
} 

foreach (array_slice($shops, 9, 9) as $shop) { 
    ... 
} 

??

1
foreach (array_chunk($shops, 9) as $section) { 
    // Do some logic on each section 
    foreach ($section as $shop) { 
     // Do some logic on each shop 
    } 
} 
+0

Câu trả lời này phức tạp hơn nhiều so với các câu trả lời khác. –

Các vấn đề liên quan