PHP正确读取我的购物车数组?

时间:2019-02-03 15:06:45

标签: php arrays webshop

我正在建立新手网上商店,但遇到了问题。我编写了一个函数来简单地绘制一个已定义的项目。 (因此,只有将商品实际添加到我的购物车中,它才会绘制图像及其说明)。

请注意,这显然不是最佳方法。但是应该可以。

设置我的物品。仅在开始时已实际定义它们时才起作用。

      $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)) 它会起作用,但这不是我要实现的目标。

我需要它在函数中工作,但是对我来说,当我使用fit参数调用函数时,这没有意义,它不会显示。但是,如果我要在函数内部进行检查,它会起作用。因此失去了使用函数的意义。


已解决

问题是我的$ item1 $ item2 $ item3 ...不会在范围内使用,不知道为什么,但这就是问题所在。在我的函数内部调用会话可以解决该问题。感谢您的帮助!

2 个答案:

答案 0 :(得分:0)

为什么不在函数外使用$ 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>';
      }
  }

答案 1 :(得分:0)

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等超出了该功能的范围。