За последние 24 часа нас посетили 18232 программиста и 1700 роботов. Сейчас ищут 1494 программиста ...

Сериализация автомассивов и запись в БД.

Тема в разделе "PHP для новичков", создана пользователем Demon, 21 ноя 2006.

  1. Demon

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

    С нами с:
    20 апр 2006
    Сообщения:
    239
    Симпатии:
    0
    Я хочу понять, почему в первом случае, если Имя песни и Ссылка.. заменены str_replace на пустое значение, то при последующей попытке удаления ключей из массива они оттуда Не Удаляются. А во втором случае, если стереть Имя песни и Ссылка.. руками, то потом ключи спокойно удаляются, хотя оба массива одинаковы, т.е и в первом случае ключи тоже должны удаляться..
     
  2. Mavir

    Mavir Guest

    Зависит от фазы Луны.

    Ну как Вы не можете понять, что если к одним и тем же данным применить один и тот же алгоритм, то на выходе должны быть одинаковые данные (если, конечно, в алгоритме не предусмотрена случайная генерация). Значит у Вас все таки исходные данные не одинаковые.
     
  3. Demon

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

    С нами с:
    20 апр 2006
    Сообщения:
    239
    Симпатии:
    0
    Блин, все-таки проблема с удаление пустых ключей не разрешилась.
    Вот код:
    Код (Text):
    1.  
    2. <form action="#" method="post">
    3. <input type="text" name="var[]" />
    4. <input type="text" name="var[]" />
    5. <input type="text" name="var[]" />
    6. <input type="text" name="var[]" />
    7. <input type="submit" name="ok">
    8. </form>
    9. <?
    10. while($key = array_search('', $_POST['var'])) {
    11. unset($_POST['var'][$key]);
    12. }
    13. print_r($_POST['var']);
    14. ?>
    Если все поля, кроме первого, оставить пустыми, выводиться
    Код (Text):
    1. Array ( [0] => 1 )  
    Если ввести значение только в два средних, выводиться
    Код (Text):
    1. Array ( [0] => [1] => 1 [2] => 2 [3] => )
    :cry:
     
  4. eduha

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

    С нами с:
    8 ноя 2006
    Сообщения:
    278
    Симпатии:
    0
    Адрес:
    Караганда
    PHP:
    1. while( false !== ( $key = array_search( '', $_POST['var'] ) ) )
    А вообще, чем не нравится код, который предложил Горбунов Олег несколькими постами выше?
     
  5. Demon

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

    С нами с:
    20 апр 2006
    Сообщения:
    239
    Симпатии:
    0
    Мне просто непонятно, почему мой вариант не работает..:oops:
    Пасибо.
     
  6. eduha

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

    С нами с:
    8 ноя 2006
    Сообщения:
    278
    Симпатии:
    0
    Адрес:
    Караганда
    Очень просто. Если первый элемент массива пустой, то функция вернет 0 (ведь индекс первого элемента массива - 0). Ну а раз так, то и while() не выполнится. false !== ( expression ) явно указывает, что надо проверить что функция вернула именно false, а не 0