Я хотел бы создать что-то простое. Поскольку я новичок в PHP, я изо всех сил пытаюсь понять, что я делаю неправильно. У меня есть два файла PHP-файлов в фрагментах кода ниже, а также статический код, который я ищу.
<?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 // 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] ?>
Это вопрос предпочтения, я считаю, что код делает его более читаемым.