Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > Инкремент имени переменной


Автор: Coder_D 30.6.2016, 18:02
Ребята, привет.
Никак не могу сообразить, не хватает знаний.
Мне нужно каждые 40 проходов цикла записывать в новый массив
(неизвестно сколько проходов будет).
Не получает. Помогите!
Код

$i = 1;
$j = 1;
foreach($xmlres->categories->category as $category)
{
    if($i <= 40)
    {
        ${"cat".$j}[] = $category->id;
        $i++;
    }
    else
    {
        $i = 1;
        $j++;
    }
}

Автор: ksnk 30.6.2016, 18:41
Вот, не самый оптимальный, но относительно компактный способ порезать поток на несколько кусков определенной длины.
Код

$result=array();
$i=0;
foreach($xmlres->categories->category as $category)
{
    if (++$i ==1) {
        $result[]=array();
        $curr=&$result[array_pop(array_keys($result))];
    } else if($i >= 40) {
        $i=0;
    }
    $curr[] = $category->id;
}
unset($curr);

print_r($result);

ну или совсем компактно
Код

$result=array();$i=0;
foreach($test as $category)
{
    $result[] = $category->id;
}
$result=array_chunk($result,40);

print_r($result);



Автор: whatisnot 30.6.2016, 18:51
Цитата(ksnk @  30.6.2016,  18:41 Найти цитируемый пост)
ну или совсем компактно


Если $test, это массив массивов, то компактнее:

Код

$result=array_chunk(array_column($result, 'id'),40);

Автор: ksnk 30.6.2016, 19:32
Цитата(whatisnot @  30.6.2016,  18:51 Найти цитируемый пост)
Если $test, это массив массивов

Это  массив объектов ;) 
Хотя чего только не придумали с массивами на php, лишь бы вручную не писать  smile  

Автор: whatisnot 30.6.2016, 20:35
Цитата(ksnk @  30.6.2016,  19:32 Найти цитируемый пост)
Хотя чего только не придумали с массивами на php, лишь бы вручную не писать


А нафига писать портянки не несущие особого смысла, если можно кратко )

Автор: Coder_D 30.6.2016, 21:09
Спасибо. Получилось решить через array_chunk()

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)