За последние 24 часа нас посетили 50065 программистов и 1406 роботов. Сейчас ищут 1075 программистов ...

Комбинирование массива

Тема в разделе "PHP для новичков", создана пользователем Danil005, 14 сен 2017.

  1. [vs]

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

    С нами с:
    27 сен 2007
    Сообщения:
    10.559
    Симпатии:
    632
    Какая разница алгоритму, какое число комбинаций перебирать? Ты написал что еще один пункт не выстроится по правилу, с чего бы это
    PHP:
    1. $r = Array('Питер','ул. Красная', 'Москва','Сочи');
    Код (Text):
    1. Питер - ул. Красная
    2. Питер - Москва
    3. Питер - Сочи
    4. ул. Красная - Москва
    5. ул. Красная - Сочи
    6. Москва - Сочи
    --- Добавлено ---
    Джойнить - это про JOIN в sql
    --- Добавлено ---
    Сначала составляешь список для листа, с ид - название. Потом по ид выстраиваешь последовательность.
     
  2. gruth

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

    С нами с:
    13 май 2017
    Сообщения:
    224
    Симпатии:
    18
    Можешь в таблице 2 ключа уникальными сделать, и уже с джоином и игнором ошибок заполнить поля
     
  3. Danil005

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

    С нами с:
    2 янв 2015
    Сообщения:
    528
    Симпатии:
    30
    Начнем с того, что все улицы страны я просто не смогу сделать. Пользователь сам вносит эти улицы.
    Я с SQL плохо знаком. Знаю только основы.
     
  4. gruth

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

    С нами с:
    13 май 2017
    Сообщения:
    224
    Симпатии:
    18
    Но тебе ведь нужно именно на sql?
     
  5. Danil005

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

    С нами с:
    2 янв 2015
    Сообщения:
    528
    Симпатии:
    30
    Желательно, ибо слишком много циклов выходит.
     
  6. gruth

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

    С нами с:
    13 май 2017
    Сообщения:
    224
    Симпатии:
    18
    Ну и я про это. Читай про join
     
  7. [vs]

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

    С нами с:
    27 сен 2007
    Сообщения:
    10.559
    Симпатии:
    632
    Иии записывать их в отдельную таблицу-список религия не позволяет? Это будет правильно. И бонус - ты накопишь базу названий и сможешь запилить автокомплит при наборе букв. Чтобы помогать пользователю и не копить дубли, которыми твоя база будет переполнена.
    И ты так и не объяснил, что неправильного в результате моего алгоритма.
    --- Добавлено ---
    Алгоритм с указателем массива потребует 0 затрат память и сработает в сто раз быстрее, чем select.
     
  8. Danil005

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

    С нами с:
    2 янв 2015
    Сообщения:
    528
    Симпатии:
    30
    Хорошо.
    В нем все правильно, есть просто проблема. Если в базе уже существует комбинация (например):
    1-2
    1-3
    1-4
    2-4
    И я хочу добавить еще одну, например, 5, нужно чтобы получилось таким образом:
    1-2
    1-3
    1-4
    1-5
    2-4
    2-5
    3-5
     
  9. [vs]

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

    С нами с:
    27 сен 2007
    Сообщения:
    10.559
    Симпатии:
    632
    @Danil005 если задача связана с упорядочиванием элементов по порядку, чтобы вставить вдруг появившися пятый элемент в середину, то это задача по сортировке меню в БД. Когда CMS позволяет передвигать пункты вверх-вниз, она не меняет положение строк в базе. Обычно, у элементов есть поле вес и оно может выставляться с большим шагом (например, 1000). Чтобы передвинуть элемент вверх, надо выставить вышестоящему пункту вес на единицу больше, чем у этого. Например было
    Код (Text):
    1. A | 1000
    2. B | 2000
    3. C | 3000
    стало
    Код (Text):
    1. A | 2001
    2. B | 2000
    3. C | 3000
    т.е. добавляешь новую запись в конец, потом с помощью веса выставляешь на нужное место. Из базы всегда выбираешь с сортировкой по весу.
     
  10. Познающий php

    Познающий php Новичок

    С нами с:
    23 мар 2017
    Сообщения:
    381
    Симпатии:
    74
    ахаххахахахах, скопируйте это в тему с приколами :D
     
    gruth нравится это.
  11. Danil005

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

    С нами с:
    2 янв 2015
    Сообщения:
    528
    Симпатии:
    30
    @[vs], ты не понял.
    У меня уже есть комбинация в бд, а мне к этой комбинации нужно добавить элемент, тем самым сделать еще больше комбинаций.
    Было
    1-2
    1-3
    2-3
    Стало после доавления ОДНОГО элемента (элемент: 4)
    1-2
    1-3
    1-4
    2-3
    3-4
     
  12. [vs]

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

    С нами с:
    27 сен 2007
    Сообщения:
    10.559
    Симпатии:
    632
    @Danil005 почему нельзя удалить старую комбинацию и записать новую?
     
  13. Danil005

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

    С нами с:
    2 янв 2015
    Сообщения:
    528
    Симпатии:
    30
    Я так делал, нужно брать уникальные значения.
    Сегодня проснулся и меня осенила мысль.
    Как ты и говорил, создать еще одну таблицу и записывать иды, следовательно именно оттуда я брал значения. Впрочем, спасибо, кто пытался вникнул в мой бред!