[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Разбить массив
Renden
Подскажите как разбить массив на 2 в зависимости от условия. Есть массив:
Цитата

Array
(
    [0] => Array
        (
            [page_id] => 6
            [name] => раздел бухгалтерии
            [desc] => Описание раздела бухгалтерии
            [by_user] =>
        )

    [1] => Array
        (
            [page_id] => 3
            [name] => моя страничка
            [desc] =>
            [by_user] => 1
        )

    [2] => Array
        (
            [page_id] => 5
            [name] => раздел ИТ
            [desc] => Описание раздела ИТ
            [by_user] =>
        )
)


Нужно чтоб где [by_user] => 1 был один массив, а где [by_user] => пусто или 0 - то другой.

Нагуглил функцию array_chunk() но в моем случае я даже хз как ей воспользоватся..
Можно конечно 2 запроса сделать и сгенерировать 2 масива, но мое мнение чем меньше запросов в коде тем лучше)



Спустя 1 минута, 51 секунда (4.05.2011 - 10:06) linker написал(а):
А в чём сложности пройтись в цикле по массиву и определить где 1, а где 0 или пусто?

Спустя 6 минут, 55 секунд (4.05.2011 - 10:13) Renden написал(а):
linker
Никаких сложностей нет, но просто мне нужно в разных местах вывести содержимое этих массивов, т.е 2 форечами. Нехотелось бы делать так:

foreach ($a as $b) {
if ($b['by_user'] != 1)
$some1[]=$b;
else
$some2[]=$b;
}
//а потом еще так:
foreach ($some1 as $xz1)
echo $xz1;

foreach ($some2 as $xz2)
echo $xz2;


я думал МБ как-то в пхп предусмотрена разбивка массивов в зависимости от значений..

Спустя 29 минут, 53 секунды (4.05.2011 - 10:43) linker написал(а):
А так сразу чтоб
foreach ($a as $b) 
{
if ($b['by_user'] != 1)
echo 'пусто ' . $b;
else
echo '1 ' . $b;
}

Спустя 15 минут, 5 секунд (4.05.2011 - 10:58) Renden написал(а):
linker
Цитата
в разных местах вывести содержимое этих массивов

т.е в разных местах страницы где by_user =1 в шапке допустим, а где 0 в футере.. и ктомуж еще в шаблоне,в куче дивов и тп.

Спустя 1 час, 6 минут, 48 секунд (4.05.2011 - 12:05) linker написал(а):
ну тогда видимо придётся делать так, как тебе бы не хотелось. wink.gif Самый нормальный вариант, уже заранее при получении данных формировать два массива.

Спустя 9 минут, 43 секунды (4.05.2011 - 12:14) Renden написал(а):
linker
Так и сделал, раз других вариантов нет :) Жаль что в массивах нет условий удобно бы было например:

$array = 'мой массив';
break_array($array,['by_user'] == 1, $some1, $some2);
//на выходе $some1 масив где равно, $some2 масив где не равно)


интересно а свою функцию на C++ можно написать и впихнуть в ядро пхп?))

Спустя 46 минут, 52 секунды (4.05.2011 - 13:01) linker написал(а):
Ну почему есть тормозные array_walk() например, но это тот же цикл закамуфлированный, но опять же все проверки делать придётся самому.

Спустя 4 минуты, 18 секунд (4.05.2011 - 13:06) Renden написал(а):
linker
Хм а не плохая функция array_walk(), пригодится, но не в данном случае. Да по ней видно что она тормозная, тк она каждый раз циклом вызывает еще и функцию пользовательскую smile.gif
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.