За последние 24 часа нас посетили 15774 программиста и 1666 роботов. Сейчас ищет 831 программист ...

Масивы из масива?????

Тема в разделе "Прочие вопросы по PHP", создана пользователем Sxtovets, 10 ноя 2008.

  1. Sxtovets

    Sxtovets Активный пользователь

    С нами с:
    10 ноя 2008
    Сообщения:
    8
    Симпатии:
    0
    Здравствуйте Уважаемые!
    Кто может, помогите пожалуйса...

    Допустим у меня есть масив,

    $array = array(
    1=>"Адам",
    2=>"Андрей",
    3=>"Афанасий",
    4=>"Алексей",
    5=>"Владимер",
    6=>"Виктор",
    7=>"Николай",
    8=>"Никита",
    9=>"Денис",
    10=>"Дмитрий",
    );

    как вывести слова начинающиеся на А, В, Н и т.д. и загнать их в отдельный масив?
    Примерно так...
    А
    Адам
    Андрей
    Афанасий
    Алексей
    В
    Владимер
    Виктор
    Н
    Николай
    Никита
    Д
    Денис
    Дмитрий
     
  2. [vs]

    [vs] Суперстар
    Команда форума Модератор

    С нами с:
    27 сен 2007
    Сообщения:
    10.559
    Симпатии:
    632
    PHP:
    1. <?php
    2. function SortNames($names) {
    3.     $letters=array('А','Б','В','Г','Д','Е','Ё','Ж','З','И','Й','К','Л','М','Н','О','П','Р','С','Т','У','Ф','Х','Ц','Ч','Ш','Щ','Ъ','Ы','Ь','Э','Ю','Я');
    4.     $result=array();
    5.     foreach ($names as $name) {
    6.         $letter_id=array_search(strtoupper($name[0]),$letters) or die('Неизвестный первый символ');
    7.         $result[$letters[$letter_id]][]=$name;
    8.     }
    9.     return $result;
    10. }
    11.  
    12. /* Тест */
    13. $names=array('Вася','Петя','Коля');
    14. print_r(SortNames($names));
    15. ?>
     
  3. obsrv

    obsrv Активный пользователь

    С нами с:
    2 окт 2008
    Сообщения:
    238
    Симпатии:
    0
    Адрес:
    Санкт-Петербург
    К массиву $array

    PHP:
    1.  
    2. $ch = '';
    3. $res = array();
    4. foreach ($array as $k=>$v) {
    5.   if ($ch != $v[0]) $ch = $v[0];
    6.   $res[$ch][] = $v;
    7. }
    8. print_r($res);
    9.  
     
  4. Sergey89

    Sergey89 Активный пользователь

    С нами с:
    4 янв 2007
    Сообщения:
    4.796
    Симпатии:
    0
    PHP:
    1. <?php
    2. $result = array();
    3.  
    4. foreach ($array as $v) {
    5.     $result[$v[0]][] = $v;
    6. }
     
  5. [vs]

    [vs] Суперстар
    Команда форума Модератор

    С нами с:
    27 сен 2007
    Сообщения:
    10.559
    Симпатии:
    632
    Ппц... Надо учиться думать по-новой ))
     
  6. obsrv

    obsrv Активный пользователь

    С нами с:
    2 окт 2008
    Сообщения:
    238
    Симпатии:
    0
    Адрес:
    Санкт-Петербург
    Sergey89
    точно. вылетело.
     
  7. Sxtovets

    Sxtovets Активный пользователь

    С нами с:
    10 ноя 2008
    Сообщения:
    8
    Симпатии:
    0
    Спасибо всем, кто откликнулся на мою прозьбу!!!

    Но дело в том, что мне над чтоб было без масива с буквами, чтоб выбиралась первая буква и слова начинающийся на эту букву заносились в новый масив
     
  8. [vs]

    [vs] Суперстар
    Команда форума Модератор

    С нами с:
    27 сен 2007
    Сообщения:
    10.559
    Симпатии:
    632
    Так чтоли?
    PHP:
    1. <?php
    2. $array=array("Вася","Юра","Вова","Юлий");
    3. foreach ($array as $v) {
    4.     eval('isset($'.strtoupper($v[0]).') ? $'.strtoupper($v[0]).'[]="'.$v.'" : $'.strtoupper($v[0]).'=array("'.$v.'");');
    5. }
    6. print_r();
    7. ?>
    А чем вложеные массивы не устраивают?
     
  9. obsrv

    obsrv Активный пользователь

    С нами с:
    2 окт 2008
    Сообщения:
    238
    Симпатии:
    0
    Адрес:
    Санкт-Петербург
    Sxtovets
    Распечатайте из примера Sergey89
    print_r($result);

    и поймете, что можно получить все, что на А: $result['A'];
    а можно сделать array_keys($result) и получить все буквы 'A', 'В' и тд, а потом пробежаться по $result и собрать то что вы хотите и как хотите.

    думайте!
     
  10. Sxtovets

    Sxtovets Активный пользователь

    С нами с:
    10 ноя 2008
    Сообщения:
    8
    Симпатии:
    0
    В общем мне надо из этого...

    PHP:
    1. $neme=array(
    2.             2=>'Андрей',
    3.             4=>'Алексей',
    4.            14=>'Антон',
    5.            23=>'Дмитрий',
    6.            25=>'Денис',
    7.            26=>'Петро',
    8.            29=>'Петя',
    9.            35=>'Петрович',);
    получить вот это...

    PHP:
    1. $neme=array( [А] => array ( 2=>'Андрей',
    2.                              4=>'Алексей',
    3.                           14=>'Антон', )
    4.                        
    5.               [Д] => array ( 23=>'Дмитрий',
    6.                              25=>'Денис', )
    7.                        
    8.               [П] => array ( 26=>'Петро',
    9.                             29=>'Петя',
    10.                             35=>'Петрович', )
    11.            )
    как это сделать не понимаю..... :cry:
     
  11. decoder

    decoder Активный пользователь

    С нами с:
    11 фев 2006
    Сообщения:
    469
    Симпатии:
    0
  12. Sergey89

    Sergey89 Активный пользователь

    С нами с:
    4 янв 2007
    Сообщения:
    4.796
    Симпатии:
    0
    PHP:
    1. <?php
    2. $result = array();
    3.  
    4. foreach ($array as $k => $v) {
    5.     $result[$v[0]][$k] = $v;
    6. }
    а потом сортировка
     
  13. Sxtovets

    Sxtovets Активный пользователь

    С нами с:
    10 ноя 2008
    Сообщения:
    8
    Симпатии:
    0
    Ага, спасибо большое!!!!! :D
     
  14. Vitas

    Vitas Активный пользователь

    С нами с:
    7 фев 2006
    Сообщения:
    595
    Симпатии:
    0
    Адрес:
    Новосибирск, Академгородок
    Sxtovets, до этого было сложно додуматься самому?
     
  15. Sxtovets

    Sxtovets Активный пользователь

    С нами с:
    10 ноя 2008
    Сообщения:
    8
    Симпатии:
    0
    Позвольте, примите мое уважение к вам, но вы тоже в чем то не очень хорошо разбираетсь, невозможно знать все и сразу, для этого и существует этот форум чтобы помогать друг другу...