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

Как создать массив?

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

  1. php4

    php4 Новичок

    С нами с:
    29 июл 2016
    Сообщения:
    91
    Симпатии:
    0
    Всем добрый день! Неделю назад начал изучать PHP, и мне необходимо реализовать такую задачу:
    1. Создайте форму с method=”post”.
    2. В форме должны быть текстовая область (textarea) и кнопка.
    3. В обработчике необходимо принять строку из текстовой области.
    4. Создайте массив, где каждый элемент будет содержать 1 символ из переданной строки.
    5. Удалите каждый чётный элемент (то есть 0, 2, 4 и так далее).
    6. Соедините все элементы получившегося массива в одну строку и выведите её.
    Примечание: Должно получиться что-то наподобие этого: пришла строка «Моя строка», а выйти в браузер должно: «о тоа».

    Я написал что-то вроде этого, но не пойму как реализовать пункт 4 и 5. Нужно сделать это самым примитивным способом (т.е. без преобразований из строки в массив (str_split), функций и т.п.)
    PHP:
    1. <?php
    2.     $text = false;
    3.     if(isset($_POST['submit'])) {
    4.         $text = htmlspecialchars($_POST['text']);
    5.         for ($i = 0; $i < count($text); $i++) {
    6.             $arr[] = $i;
    7.         }
    8.         echo $arr;
    9.     }
    10. ?>
    HTML:
    1. <form action="<?=$_SERVER['PHP_SELF']?>" method="post">
    2.     <textarea name="text" value="<?=$text?>"></textarea>
    3.     <input type="submit" name="submit" value="Отправить" />
    4. </form>
     
  2. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.771
    Адрес:
    :сердА
    Уверен? По-моему в задании явно сказано обратно:
    Ну правда, куда уж проще-то? Дернул встроенную функцию и готово.
     
  3. TeslaFeo

    TeslaFeo Старожил

    С нами с:
    9 мар 2016
    Сообщения:
    2.984
    Симпатии:
    759
    Знаешь как такое ручками написать?
    я нет.
     
  4. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.771
    Адрес:
    :сердА
    Как нефиг делать, в общем-то, учитывая, что в php по строке можно побайтово бегать через индексы в квадратных скобках. Но если надо мультибайтовое решение, то вот же оно.
     
  5. php4

    php4 Новичок

    С нами с:
    29 июл 2016
    Сообщения:
    91
    Симпатии:
    0
    Хорошо, str_split. Преобразовал, а дальше как каждый символ в элемент массива записывать
    PHP:
    1. <?php
    2.     $text = false;
    3.     if(isset($_POST['submit'])) {
    4.         $text = str_split(htmlspecialchars($_POST['text']));
    5.         for ($i = 0; $i < count($text); $i++) {
    6.             $arr[] = $i;
    7.         }
    8.         echo $arr;
    9.     }
    10. ?>
     
  6. TeslaFeo

    TeslaFeo Старожил

    С нами с:
    9 мар 2016
    Сообщения:
    2.984
    Симпатии:
    759
    ты хочешь сказать, что ты этим кодом получил массив с символами строки?
    выведи его и посмотри что получилось.
     
  7. gruth

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

    С нами с:
    13 май 2017
    Сообщения:
    224
    Симпатии:
    18
  8. TeslaFeo

    TeslaFeo Старожил

    С нами с:
    9 мар 2016
    Сообщения:
    2.984
    Симпатии:
    759
    получить то получил.
    Но он в $text лежит, а вот в $arr лежат числа от нуля и до count($text)-1 (зачем-то)
     
  9. gruth

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

    С нами с:
    13 май 2017
    Сообщения:
    224
    Симпатии:
    18
    И что бы результаты смотреть используй print_r($arr) но не как не echo.
     
  10. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.771
    Адрес:
    :сердА
    Ну а дальше все просто - беги по массиву, проверяй четность индексов. Если индекс четный - пиши соответствующий символ в результат.
    Четность проверяется отсутствием остатка от деления на 2. В этом тебе поможет оператор "%". То есть конструкция ($i % 2). Нет, это не оператор вычисления процентов.
    --- Добавлено ---
    Или еще более простой вариант - у $i инкрементом ставь не $i++, а $i+=2
     
  11. php4

    php4 Новичок

    С нами с:
    29 июл 2016
    Сообщения:
    91
    Симпатии:
    0
    Я не пойму что в цикле писать
    PHP:
    1. <?php
    2.     $text = false;
    3.     if(isset($_POST['submit'])) {
    4.         $text = htmlspecialchars($_POST['text']);
    5.         $arr = str_split($text);
    6.         /*for ($i = 0; $i < split_length($arr); $i+=2) {
    7.            
    8.         }*/
    9.     }
    10. ?>
     
  12. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.771
    Адрес:
    :сердА
    В предыдущем примере у вас не было проблем с тем, чтобы в цикле пойти по массиву. Теперь появились. Как так-то? Что именно не понятно? Ну или если вам готовый код нужен, а не обучение, то я могу переместить тему в соответствующий раздел.
     
  13. php4

    php4 Новичок

    С нами с:
    29 июл 2016
    Сообщения:
    91
    Симпатии:
    0
    Готового кода не нужно. Хочу сам разобраться. Сделал так, но походу высвечиваются только элементы массива (0246810)
    PHP:
    1. $text = false;
    2.   if(isset($_POST['submit'])) {
    3.   $text = str_split(htmlspecialchars($_POST['text']));
    4.   for ($i = 0; $i < count($text); $i+=2) {
    5.   echo $arr[] = $i;
    6.   }
    7.   }
     
    #13 php4, 14 май 2017
    Последнее редактирование: 14 май 2017
  14. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.599
    Симпатии:
    1.764
    Вот что ты, по-твоему, этой строчкой делаешь?
     
  15. php4

    php4 Новичок

    С нами с:
    29 июл 2016
    Сообщения:
    91
    Симпатии:
    0
    Бред делаю, знаю. В массив $arr присваиваю $i, и пытаюсь вывести не понятно что. Я уже сам запутался
     
  16. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.771
    Адрес:
    :сердА
    Ты присваиваешь счетчик. А надо что? Надо ячейку ранее полученного массива, номер которой совпадает со значением счетчика.
    Код твой почти готов. Осталось чуть чуть капельку допилить. Буквально вот граммульку. Что эта граммулька должна делать - я сказал. пробуй. Ты близок.
    --- Добавлено ---
    У тебя есть массив $text, у тебя есть счетчик $i. Тебе нужна ячейка массива $text под номером $i. Как мы обращаемся к ячейкам массива?
     
  17. TeslaFeo

    TeslaFeo Старожил

    С нами с:
    9 мар 2016
    Сообщения:
    2.984
    Симпатии:
    759
    и без остатка от деления на 2 разобрался :)
     
  18. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.771
    Адрес:
    :сердА
    Ну...на деле это я ему подсказал. Но, главное не откуда инфа, а правильность применения. В данном случае - применено правильно.