За последние 24 часа нас посетили 27669 программистов и 1815 роботов. Сейчас ищут 1024 программиста ...

Работа с массивом

Тема в разделе "PHP для новичков", создана пользователем LokiFC, 4 янв 2009.

  1. LokiFC

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

    С нами с:
    27 июн 2008
    Сообщения:
    72
    Симпатии:
    0
    Адрес:
    Default City
    Здравствуйте, уважаемые php-мастера,

    Тут у меня такая жесть...
    Есть массив, например:
    PHP:
    1. <?php array(
    2. [0] =>array( [0] => "thing1, thing2"),
    3. [1] => array ( [0] => "thing3" ),
    4. [2] => array( [0] =>"thing1, thing3, thing5,"),
    5. [3] => array( [0] => "thing2, thing4"),
    6. //и.т.д.....
    7. );
    8.  
    Мне нужно выдать список "thing1, thing2, thing3...итд"
    т.е. мне нужно сначало превратить это в большой массив, потом убрать повторения, отсортировать и имплоиднуть.
    На словах-то все просто, а код никак написать что-то не получается :(
    Я долго ломал голову, но так ничего и не написал, поэтому решил задать вопрос вам...

    Заранее благодарю =)
     
  2. egrik

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

    С нами с:
    22 дек 2006
    Сообщения:
    23
    Симпатии:
    0
    Адрес:
    Voronezh
    на словах у вас все уже рассказано, что именно не получается?

    foreach + explode
    array_unique
    sort
    implode
     
  3. Greg1978

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

    С нами с:
    18 окт 2008
    Сообщения:
    484
    Симпатии:
    0
    Адрес:
    class SenjorUser{}
    array array_merge(array data, array data, ...)
     
  4. [vs]

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

    С нами с:
    27 сен 2007
    Сообщения:
    10.559
    Симпатии:
    632
    PHP:
    1. <?php
    2. foreach ($array as $v) {
    3.     $array2=!empty($array2)?array_merge($array2,$v):$v;
    4. }
    5. sort(array_unique($array2));
    6. echo implode(null,$array2);
    :)
     
  5. LokiFC

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

    С нами с:
    27 июн 2008
    Сообщения:
    72
    Симпатии:
    0
    Адрес:
    Default City
    Уже нашел выход. Это нужно было для выхода тэгов из БД.
    Функции дается результат mysql_query, а возвращается html текст с тегами.
    Только не смейтесь над именами переменных:
    PHP:
    1. <?php
    2. function tagwork($msqlbuf){
    3.  while($adin = mysql_fetch_row($msqlbuf)){
    4.    $dva[] = $adin;
    5.  }
    6.  foreach($dva as $tri){
    7.    $adin[] = str_replace(" ","",$tri[0]);
    8.  }
    9.  $dva = implode(",",$adin);
    10.  $tri = explode(",",$dva);
    11.  $tri = array_unique($tri); sort($tri);
    12.  foreach($tri as $adin){
    13.    $return .= "<a href=\"tag.php?tag=".$adin."\">".$adin."</a>, ";
    14.  }
    15.  return $return;
    16. } ?>
    Всем спасибо за помощь =)
     
  6. LokiFC

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

    С нами с:
    27 июн 2008
    Сообщения:
    72
    Симпатии:
    0
    Адрес:
    Default City
    Вот читаю этот код и понимаю какой я жадный на переменные))
     
  7. Kreker

    Kreker Старожил

    С нами с:
    8 апр 2007
    Сообщения:
    5.433
    Симпатии:
    0
    LokiFC
    Последний код делает что-то страшное...

    Вот вариант для первого вопроса:
    PHP:
    1. <?php
    2. $gg =  array(
    3.     "0" => array("0" => "thing1, thing2"),
    4.     "1" => array ("0" => "thing3" ),
    5.     "2" => array("0" =>"thing1, thing3, thing5,"),
    6.     "3" => array("0" => "thing2, thing4")
    7. );
    8.  
    9.  
    10. $array = Array();
    11. while ($row = current($gg)) {
    12.     $tmp = explode(",", $row[0]);
    13.     for ($i = 0, $count = sizeof($tmp); $i < $count; $i++) {
    14.         if (!in_array($tmp[$i], $array) and !empty($tmp[$i]))
    15.             $array[] = trim($tmp[$i]);
    16.     }
    17.     next($gg);
    18. }
    19. sort($array);
    20.  
    21.  
    22. /*
    23. print_r($array):
    24. Array
    25. (
    26.     [0] => thing1
    27.     [1] => thing2
    28.     [2] => thing3
    29.     [3] => thing3
    30.     [4] => thing4
    31.     [5] => thing5
    32. )
    33. */
    34.  
    35.  
    Но вообще, задача поставлена неправильно.