PHP правильно читает мой массив моей корзины? - PullRequest
0 голосов
/ 03 февраля 2019

Я создаю интернет-магазин для новичков, и у меня возникла проблема.Я написал функцию, которая просто рисует элемент, если он определен.(поэтому оно будет рисовать изображение с его описанием, только если товар действительно был добавлен в мою корзину).

Обратите внимание, это, очевидно, не лучший способ сделать это.Но это должно работать.

Настройка моих предметов.Будет работать, только если они действительно определены в начале.

      $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)), это будет работать, но это не то, чего я пытаюсь достичь.

Мне нужно, чтобы оно работало вфункция, но для меня не имеет смысла, когда я вызываю функцию с аргументами подгонки, это не будет отображаться.Но если бы я сделал проверку внутри своей функции, это работает.Следовательно, теряется смысл использовать функцию.


SOLVED

Проблема заключалась в том, что мой $ item1 $ item2 $ item3 ... не будет использоваться в области действия, не знаю почему, ноэто была проблема.Вызов сессий внутри моей функции решил это.Спасибо за помощь!

Ответы [ 2 ]

0 голосов
/ 03 февраля 2019
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 и т. Д. Находятся вне области действия функции.

0 голосов
/ 03 февраля 2019

почему вы не используете $ 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>';
      }
  }
...