Intereting Posts
Отправка почты (в Localhost) с помощью библиотеки электронной почты CodeIgniter из gmail не работает Как удалить все экземпляры дублированных значений из массива Как запустить PHP-код в Sublime Text 2 Рассмотрение проблем безопасности с помощью команды «exec» php «Неустранимая ошибка: не удается переопределить класс» … но класс не был объявлен Шифрование с использованием mcrypt, PHP и MySQL как отображать несколько изображений (blob) из mysql с помощью php? как добавить границу изображения вокруг изображения? Как включить расширение php с помощью `phpize`? Загрузка изображения ajax jquery Сортировка фильмов по 2 вещам Чтение строки за строкой из STDIN без блокировки Как я могу взорвать и обрезать пробелы? Как добавить и объединить текстовое значение из 2 элементов textarea и заполнить комбинированный текст в третьем текстовом поле с помощью JavaScript? исключение: исключение из памяти в процессе Ajax

PHP-захват массивов для создания строк кода

Я хотел бы создать что-то простое. Поскольку я новичок в PHP, я изо всех сил пытаюсь понять, что я делаю неправильно. У меня есть два файла PHP-файлов в фрагментах кода ниже, а также статический код, который я ищу.

PHP TOPPINGS

<?php foreach ($toppingItems as $item) { echo "<label class="hover topping" for="c$item[number]"><input class="items" onclick="findTotal()" type="checkbox" name="topping" value="1.00" id="c$item[number]">$item[title]</label>"; } ?> 

PHP ARRAYS

 <?php // Pizza Toppings $toppingItems = array( array( "number" => "4", "title" => "EXTRA CHEESE" ), array( "number" => "5", "title" => "TOMATOES" ), array( "number" => "6", "title" => "OLIVES" ), array( "number" => "7", "title" => "MUSHROOMS" ), array( "number" => "8", "title" => "CHICKEN" ), array( "number" => "9", "title" => "MOZZARELLA" ), array( "number" => "10", "title" => "SALAMI" ), array( "number" => "11", "title" => "ONIONS" ), array( "number" => "12", "title" => "PEPPERONI" ), array( "number" => "13", "title" => "STUFFED CRUST" ), array( "number" => "14", "title" => "MEATBALLS" ), array( "number" => "15", "title" => "BACON" ), array( "number" => "16", "title" => "HAM" ), array( "number" => "17", "title" => "SHRIMPS" ), ); ?> 

СТАТИЧЕСКИЙ КОД, КОТОРЫЙ Я ИЩУ СОЗДАТЬ

 <label class="hover topping" for="c4"><input class="items" onclick="findTotal()" type="checkbox" name="topping" value="1.00" id="c4">EXTRA CHEESE</label> <label class="hover topping" for="c5"><input class="items" onclick="findTotal()" type="checkbox" name="topping" value="1.00" id="c5">TOMATOES</label> <label class="hover topping" for="c6"><input class="items" onclick="findTotal()" type="checkbox" name="topping" value="1.00" id="c6">OLIVES</label> <label class="hover topping" for="c7"><input class="items" onclick="findTotal()" type="checkbox" name="topping" value="1.00" id="c7">MUSHROOMS</label> <label class="hover topping" for="c8"><input class="items" onclick="findTotal()" type="checkbox" name="topping" value="1.00" id="c8">CHICKEN</label> <label class="hover topping" for="c9"><input class="items" onclick="findTotal()" type="checkbox" name="topping" value="1.00" id="c9">MOZZARELLA</label> <label class="hover topping" for="c10"><input class="items" onclick="findTotal()" type="checkbox" name="topping" value="1.00" id="c10">SALAMI</label> <label class="hover topping" for="c11"><input class="items" onclick="findTotal()" type="checkbox" name="topping" value="1.00" id="c11">ONIONS</label> <label class="hover topping" for="c12"><input class="items" onclick="findTotal()" type="checkbox" name="topping" value="1.00" id="c12">PEPPERONI</label> <label class="hover topping" for="c13"><input class="items" onclick="findTotal()" type="checkbox" name="topping" value="1.00" id="c13">STUFFED CRUST</label> <label class="hover topping" for="c14"><input class="items" onclick="findTotal()" type="checkbox" name="topping" value="1.00" id="c14">MEATBALLS</label> <label class="hover topping" for="c15"><input class="items" onclick="findTotal()" type="checkbox" name="topping" value="1.00" id="c15">BACON</label> <label class="hover topping" for="c16"><input class="items" onclick="findTotal()" type="checkbox" name="topping" value="1.00" id="c16">HAM</label> <label class="hover topping" for="c17"><input class="items" onclick="findTotal()" type="checkbox" name="topping" value="1.00" id="c17">SHRIMPS</label> 

И да, я убедился, что файл toppings.php и файл arrays.php подключены к индексному файлу.

Благодарим вас за вашу помощь заранее, и если вы все еще не знаете, чего я ищу, не стесняйтесь сообщать мне.

вы используете двойные кавычки " внутри двойных кавычек "

 echo "<label class="hover topping" for="c$item[number]"><input class="items" onclick="findTotal()" type="checkbox" name="topping" value="1.00" id="c$item[number]">$item[title]</label>"; 

попробуйте обернуть ваши HTML-атрибуты одинарными кавычками '

 echo "<label class='hover topping' for='c$item[number]'><input class='items' onclick='findTotal()' type='checkbox' name='topping' value='1.00' id='c$item[number]'>$item[title]</label>"; 

благодарю Фреда за указание, что если есть какая-то возможность, ваши ценности, такие как $item , могут содержать одиночную цитату ' сами», тогда вам придется избегать внутренних двойных кавычек с обратной косой чертой \"

 echo "<label class=\"hover topping\" for=\"c$item[number]\"><input class=\"items\" onclick=\"findTotal()\" type=\"checkbox\" name=\"topping\" value=\"1.00\" id=\"c$item[number]\">$item[title]</label>"; 

и просто сделать это еще на один шаг, если есть вероятность, что $item может содержать сочетание как одиночных ' и двойных котировок, тогда вам придется использовать подход split в ответе @ Kevinvhengst, а затем обернуть переменные htmlentities

 echo '<label class="hover topping" for="c'.htmlentities($item['number']).'"><input class="items" onclick="findTotal()" type="checkbox" name="topping" value="1.00" id="c'.htmlentities($item['number']).'">'.htmlentities($item['title']).'</label>'; 

Повторите следующее:

 echo '<label class="hover topping" for="c'.$item['number'].'"><input class="items" onclick="findTotal()" type="checkbox" name="topping" value="1.00" id="c'.$item['number'].'">'.$item['title'].'</label>'; 

Смешивание строки и PHP-кода сбивает с толку, особенно когда у вас двойные кавычки, проще разместить строки HTML (которые обычно содержат двойные кавычки) в одинарных кавычках и выражениях PHP за пределами этих строк:

 foreach ($toppingItems as $item) { echo '<label class="hover topping" for="c'.$item['number']. '"><input class="items" onclick="findTotal()" type="checkbox" '. 'name="topping" value="1.00" id="c'.$item[number].'">'. $item[title].'</label>'; } 

ваш код

 foreach ($toppingItems as $item) { echo "<label class="hover topping" for="c$item[number]"><input class="items" onclick="findTotal()" type="checkbox" name="topping" value="1.00" id="c$item[number]">$item[title]</label>"; } 

содержит ошибку:

Вы не можете использовать двойные кавычки без двойных кавычек в строке с двойными кавычками PHP.

Пытаться:

 <?php foreach ($toppingItems as $item) { ?> <label class="hover topping" for="c<?= $item[number] ?>"> <input class="items" onclick="findTotal()" type="checkbox" name="topping" value="1.00" id="c<?= $item[number]?>"><?= $item[title] ?> </label> <?php } ?> 

Как вы можете видеть, я использовал для настройки моей структуры управления, но я размещаю свой HTML вне открытого и закрывающего тега php. Также я использовал

 <?= $item[number] => 

как сокращение для

 <?php echo $item[number] ?> 

Это вопрос предпочтения, я считаю, что код делает его более читаемым.