Из одного массива сделать несколько

KrotAnn

Новичок
Из одного массива сделать несколько

Есть массив :
Аня/апельсин
Коля/яблоко
/апельсин
Оля/Груша
/апельсин
Оля/Груша
/яблоко
/Груша
....................
и т.д. Хочу из этого одного массива получить несколько массивов такого типа.
************
Коля/яблоко
/яблоко
************
/апельсин
/апельсин
Аня/апельсин
**** и т.д. Колличество фруктов неограничено, колличество записей в первом массиве тоже может быть любое. Подскажите как сделать такую хитрую сортировку ?
 

WP

^_^
А можно var_dump или лучше PHP-код с этими массивами? И пример массива который нужно получить.
 

KrotAnn

Новичок
Мне не нужно делить массив на куски... Мне нужно из одного получить несколько... я пробовала в цикле проверять значение после "/" но так как колличество фруктов может быть любое я не знаю как мне создавать массив при появлении нового фрукта. Неужели в пхп нет функции позволяющей автоматически разделять массив по повторяющемся фразам...
 

donflash

Вареник клуба
Автор оригинала: KrotAnn
Мне не нужно делить массив на куски... Мне нужно из одного получить несколько... я пробовала в цикле проверять значение после "/" но так как колличество фруктов может быть любое я не знаю как мне создавать массив при появлении нового фрукта. Неужели в пхп нет функции позволяющей автоматически разделять массив по повторяющемся фразам...
Почему же нет? Есть:

http://www.php.net/split
http://www.php.net/preg_split

Только надо, сначала поколдовать со входными данными...

Вообще, как сказал WP сделай var_dump или print_r....
 

KrotAnn

Новичок
Эти функции делят не массив а строку... У меня не получается совладать с этим массивом... Я не заню как мне в цикле разделить его..? Мне нужно не просто вывести его, а посчитать потом колличество получившихся массивов и по ним построить таблицу..
 

WP

^_^
donflash
Пожуй Дирол.
KrotAnn
Не плакай :)
> Неужели в пхп нет функции позволяющей автоматически разделять массив по повторяющемся фразам..
А с какой стати ей быть? Почему-то среди новичков бытует мнение что для каждой их задачи в PHP должна по мановению пальцев материализовываться функция.

Во-первых приведи var_export($array);
Во-вторых объясни по какому принципу его элементы должны группороваться в n новых массивов.
И все будет ок.
 

KrotAnn

Новичок
Я тогда пожалуй опишу проблему полностью..
В БД есть админы, и у каждого админа есть несколько юзеров, их колличество может быть любым. У юзеров, есть свои клиенты... их тоже может быть сколь угодно...
Задача : построить таблицу вида:
time | Monday |
---- |user1 |------|user2|-...----
8-00 |client1 |
8-15 ... |client2|
8-30 |client1|
У каждого юзера есть свой спец код, по которому легко выбрать все его записи из БД. Может здесь вообще можно обойтись без сортировки ? есть более элегантный способ построениея такой таблицы..?

-~{}~ 31.08.06 15:38:

Привожу массив:
array ( 0 => 'AH10409240=>', 1 => 'AH10409240=>',
2 => 'AH10409240=>', 3 => 'AH10409240=>',
4 => 'VP2387023=>', 5 => 'VP2387023=>',
6 => 'SG8321289=>', 7 => 'SG8321289=>',
8 => 'VP2387023=>Crazy Frog', 9 => 'VP2387023=>',
10 => 'SG8321289=>', 11 => 'SG8321289=>',
12 => 'SG8321289=>Dima Belan', 13 => 'KB2476013=>',
14 => 'KB2476013=>', 15 => 'KB2476013=>', 16 => 'KB2476013=>', )
Нужно получить такое:
arra1( 0 => 'AH10409240=>Array(0=>' ',1=>' ',2=>' '...)'
array2( 0 => 'VP2387023=>Array(0=>'Crazy Frog',1=>' ',2=>' '...)'
array3( 0 => 'SG8321289=>Array(0=>'Dima Belan',1=>' ',2=>' '...)'
array4( 0 => 'KB2476013=>Array(0=>' ',1=>' ',2=>' '...)'
Так нагляднее.. А может такое вообще невозможно???
 

WP

^_^
Зачем спец. код?
> Нужно получить такое
А можно внятный пример? Хотя бы синтаксически верный.

-~{}~ 31.08.06 15:50:

p.s. уверен что сама структура сильно извращена, т.к. при правильном проектировании, такой кривой задачи, скорее всего не возникнет.
 

KrotAnn

Новичок
Получить из общего массива 4 таких массива.
arra( 0 => 'AH10409240=>Array(0=>' ',1=>' ',2=>' ')'
array( 0 => 'VP2387023=>Array(0=>'Crazy Frog',1=>' ',2=>' ')'
array( 0 => 'SG8321289=>Array(0=>'Dima Belan',1=>' ',2=>' ')'
array( 0 => 'KB2476013=>Array(0=>' ',1=>' ',2=>' ')'

Может структура и не очень верна.. только переделывать её сейчас не представляется возможным.. Уважаемый WP а нельзя ли реализовать эту задачу без изменения структуры?
 

whirlwind

TDD infected, paranoid
пипец массивчик

PHP:
$result = Array();
foreach ( $a as $v ){
    $p = split("=>",$v);
    if ( !isset($result[$p[0]]) ){
        $result[$p[0]] = Array($p[1]);
    }else{
        $result[$p[0]][] = $p[1];
    }
}

var_dump($result);
 

WP

^_^
Прости, но я не очень понимаю стуктуру массивов которые нужно получить (не уверен в своем понимании), по той причине что код не воспроизводится.
PHP:
$array = array ( 0 => 'AH10409240=>', 1 => 'AH10409240=>',
2 => 'AH10409240=>', 3 => 'AH10409240=>',
4 => 'VP2387023=>', 5 => 'VP2387023=>',
6 => 'SG8321289=>', 7 => 'SG8321289=>',
8 => 'VP2387023=>Crazy Frog', 9 => 'VP2387023=>',
10 => 'SG8321289=>', 11 => 'SG8321289=>',
12 => 'SG8321289=>Dima Belan', 13 => 'KB2476013=>',
14 => 'KB2476013=>', 15 => 'KB2476013=>', 16 => 'KB2476013=>', );
$result = array();

foreach ($array as $k => $v)
{
 $a = explode('=>',$v);
 if (!isset($result[$a[0]])) {$result[$a[0]] = array($a[1]);} else {$result[$a[0]][] = $a[1];}
}
var_export($result);
/*
array (
  'AH10409240' => 
  array (
    0 => '',
    1 => '',
    2 => '',
    3 => '',
  ),
  'VP2387023' => 
  array (
    0 => '',
    1 => '',
    2 => 'Crazy Frog',
    3 => '',
  ),
  'SG8321289' => 
  array (
    0 => '',
    1 => '',
    2 => '',
    3 => '',
    4 => 'Dima Belan',
  ),
  'KB2476013' => 
  array (
    0 => '',
    1 => '',
    2 => '',
    3 => '',
  ),
)
)*/
 

KrotAnn

Новичок
Это то что нужно!!! Спасибо ребята за помощь...! Успехов..

-~{}~ 31.08.06 17:35:

Можно последний тупой вопрос... как мне теперь добраться до каждого массива в отдельности ?
 
Сверху