2012-02-26 3 views
1

Есть ли способ в PHP выбрать сразу несколько элементов массива, например. так что в цикле for $ i = размер первого набора, который должен быть выбран, а затем последующие приращения представляют выбор следующего набора этого размера из массива -?Выбор нескольких элементов массива

Спасибо!

+0

определить «выбор элементов». –

+0

I.e. вместо того, чтобы просто прокручивать один элемент массива за раз, но вместо этого перебирать выбранные пары (например, 3 элемента, а затем делать что-то с этими 3). – user784446

+0

Вы заглянули в функцию php array_slice? это то, что вы ищете? 'for ($ i = 0; $ i <$ x; $ i + = $ range) {$ slice = array_slice ($ arr, $ i, $ range); print_r ($ slice);}' –

ответ

2

Т.е. вместо того, чтобы просто прокручивать один элемент массива за раз, но вместо этого перебирать выбранные пары (например, 3 элемента, а затем делать что-то с этими 3).

Есть много способов сделать это.
один будет

$arr = array(1,2,3,4,5,6,7,8,9); 
$new = array_chunk($arr,3); 
foreach ($new as $chunk) { 
    print_r($chunk);// 3 elements to do something with 
} 
+0

Вы имели в виду array_split? Или array_chunk? – liquorvicar

+0

спасибо, это была опечатка –

+0

Спасибо! Это замечательное решение. – user784446

0

Если я правильно понял ваш вопрос, у вас есть что-то вроде этого?

$array = array("A" => array("a","b"), 
       "B" => array("a","b"), 
       "C" => array("a","b")); 

, и вы хотите, чтобы петля мысли A, B, C в то же самое время?

Тогда вы можете сделать что-то подобное;

for($i=0;$i<=max(count($array['A']),count($array['B']),count($array['B']))){ 
    if(count($array['A'])<=$i+1) { 
     echo $array['A'][$i]; 
    } 
    if(count($array['B'])<=$i+1) { 
     echo $array['B'][$i]; 
    } 
    if(count($array['B'])<=$i+1) { 
     echo $array['B'][$i]; 
    } 
    $i++; 
} 
2

Это зависит от того, как вы хотите, чтобы группировать элементы.

$i = 4; 
$source = array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12); 
// If you want consecutive elements in the same group, i.e. the first $i elements etc 
$chunks = array_chunk($source, $i); 
foreach($chunks as $chunk) 
{ 
    // Iterate over chunk 
    echo '---<br />'; 
    foreach($chunk as $element) 
    { 
     echo $element . '<br />'; 
    } 
} 
echo '---<br />'; 
echo '---<br />'; 
// Otherwise if you want consecutive elements in separate groups 
$lastElement = count($source) - 1; 
$step = ceil(count($source)/$i); 
for($offset = 0; $offset < $step; $offset++) 
{ 
    echo '---<br />'; 
    for($element = $offset; $element <= $lastElement; $element+= $step) 
    { 
     echo $source[$element] . '<br />'; 
    } 
} 
echo '---<br />'; 
Смежные вопросы