PHP правильно читает мой массив моей корзины?
Я создаю интернет-магазин для новичков, и у меня возникла проблема. Я написал функцию, которая просто рисует элемент, если он определен. (поэтому он будет рисовать изображение с его описанием, только если товар действительно был добавлен в мою корзину).
Обратите внимание, это явно не лучший способ сделать это. Но это должно работать.
Настройка моих предметов. Будет работать, только если они действительно определены в начале.
$item1 = $_SESSION['item1'];
$item2 = $_SESSION['item2'];
$item3 = $_SESSION['item3'];
$item4 = $_SESSION['item4'];
$item5 = $_SESSION['item5'];
Вызов моей функции:
ValidateCart($item1, 'item1_name', 'item1_size', 'item1_price', 'item1_url');
Моя функция:
function ValidateCart($item, $itemname, $itemsize, $itemprice, $itemurl)
{
$arr = array($item1, $item2, $item3, $item4, $item5);
if (in_array($item, $arr)) {
echo '<br><hr>';
echo $_SESSION[$itemname]; echo '<br>';
echo $_SESSION[$itemsize]; echo '<br>';
echo '€ '; echo $_SESSION[$itemprice]; echo '<br><br>';
$itemurl1 = $_SESSION[$itemurl];
$itemurl2 = str_replace('url(', 'http://vintagefairytale.esy.es/', $itemurl1);
$itemurl3 = str_replace(')', '', $itemurl2);
echo '<img src='; echo $itemurl3; echo '></img>';
echo '<hr>';
}
}
В основном по моему ValidateCart()
Я создаю массив со всеми возможными элементами, и если элемент соответствует моему массиву, он продолжится. Однако это не так.
Если я изменю if (in_array($item, $arr))
в if (in_array($item1, $arr))
это сработает, но это не то, чего я пытаюсь достичь.
Мне нужно, чтобы это работало в функции, но для меня это не имеет смысла, когда я вызываю функцию с аргументами соответствия, это не будет отображаться. Но если я сделаю проверку внутри своей функции, это сработает. Отсюда теряется смысл использования функции.
РЕШИТЬ
Проблема заключалась в том, что мой $item1 $item2 $item3... не будет использоваться в области, не знаю почему, но это была проблема. Вызов сессий внутри моей функции решил это. Спасибо за помощь!
2 ответа
function ValidateCart($item, $itemname, $itemsize, $itemprice, $itemurl) {
$arr = array($_SESSION['item1'], $_SESSION['item2'], $_SESSION['item3'], $_SESSION['item4'], $_SESSION['item5']);
if (in_array($item, $arr)) {
echo '<br><hr>';
echo $_SESSION[$itemname]; echo '<br>';
echo $_SESSION[$itemsize]; echo '<br>';
echo '€ '; echo $_SESSION[$itemprice]; echo '<br><br>';
$itemurl1 = $_SESSION[$itemurl];
$itemurl2 = str_replace('url(', 'http://vintagefairytale.esy.es/', $itemurl1);
$itemurl3 = str_replace(')', '', $itemurl2);
echo '<img src='; echo $itemurl3; echo '></img>';
echo '<hr>';
}
}
Ваш $item1 и т. Д. Находятся вне области действия функции.
Почему вы не используете $arr вне функции и используете в качестве аргумента.
$arr = array($item1, $item2, $item3, $item4, $item5);
function ValidateCart($item, $itemname, $itemsize, $itemprice, $itemurl, $arr)
{
if (in_array($item, $arr)) {
echo '<br><hr>';
echo $_SESSION[$itemname]; echo '<br>';
echo $_SESSION[$itemsize]; echo '<br>';
echo '€ '; echo $_SESSION[$itemprice]; echo '<br><br>';
$itemurl1 = $_SESSION[$itemurl];
$itemurl2 = str_replace('url(', 'http://vintagefairytale.esy.es/', $itemurl1);
$itemurl3 = str_replace(')', '', $itemurl2);
echo '<img src='; echo $itemurl3; echo '></img>';
echo '<hr>';
}
}