unset у массива

Тема в разделе "PHP", создана пользователем phillip, 1 мар 2010.

Статус темы:
Закрыта.
Модераторы: latteo
  1. phillip

    phillip

    Регистр.:
    4 сен 2007
    Сообщения:
    413
    Симпатии:
    15
    Есть массив например
    PHP:
    $names[0]="Апельсин";
    $names[1]="Банан";
    $names[2]="Груша";
    $names[3]="Помидор";
    потом я делаю unset($names[1]);
    далее строка echo $names[mt_rand(0,count($names)-1)];
    и случайно выбор падает на этот самый который я удалил. Соответственно, мы получаем ошибку. Как быть?
     
  2. a_n_d_y

    a_n_d_y

    Регистр.:
    26 мар 2006
    Сообщения:
    465
    Симпатии:
    61
    http://ru.php.net/manual/en/function.array-rand.php
     
    phillip нравится это.
  3. PHP_Master

    PHP_Master

    Регистр.:
    3 фев 2008
    Сообщения:
    2.647
    Симпатии:
    591
    echo $names[array_rand($names)];
     
    phillip нравится это.
  4. stasdre

    stasdre Постоялец

    Регистр.:
    15 янв 2010
    Сообщения:
    125
    Симпатии:
    18
    После того как удалил перепакуй масив. После удаления у тебя просто удалиться ключ со значением, но массив не отсортируеться. Соответственно когда у тебя рандом например выдаст 1 такого ключа он не найдет в масиве, а если ты его перепакуешь все станет на свои места
     
    phillip нравится это.
  5. PHP_Master

    PHP_Master

    Регистр.:
    3 фев 2008
    Сообщения:
    2.647
    Симпатии:
    591
    И смысл в этом, если можно обойтись?
     
  6. a_n_d_y

    a_n_d_y

    Регистр.:
    26 мар 2006
    Сообщения:
    465
    Симпатии:
    61
    А зачем? Чем вышеуказаная функция не нравится?
     
  7. potuga

    potuga

    Регистр.:
    22 сен 2009
    Сообщения:
    376
    Симпатии:
    91
    Есть такая чудная функция array_splice

    Для других нужд при использовании unset нужно будет делать дополнительные проверки, например, при проходе массива foreach и т.д. Лучше уж сразу упростить себе жизнь и сэкономить процессорное время ;)
     
    phillip нравится это.
  8. a_n_d_y

    a_n_d_y

    Регистр.:
    26 мар 2006
    Сообщения:
    465
    Симпатии:
    61
    Обоснуй...
     
  9. potuga

    potuga

    Регистр.:
    22 сен 2009
    Сообщения:
    376
    Симпатии:
    91
    А этого мало?
     
Статус темы:
Закрыта.