PHP Array库存编辑

时间:2019-03-02 16:09:53

标签: php arrays

我正在使用一个库存存储在单个数据库表中的系统。我需要帮助,以找到从中添加/删除项目的最佳方法。

它存储如下;

3:1 | 8:2 | 5:3 | 4:4

第一个数字表示数量,第二个数字表示商品ID。管道|拆分这些项目。

所以3:1 =项目1的数量3。

我正在尝试使用PHP查看此字符串,查找是否存在该项目。如果添加或删除它。或者,如果没有该物品,则创建它。

我知道我将不得不使用数组来实现这一目标,但是我对如何实现这一目标感到有些迷茫,对此的任何帮助将不胜感激。

谢谢。

1 个答案:

答案 0 :(得分:3)

我将创建一个小类,其中包含一个项目->从该字符串创建的数量图(存储为数组),并在需要时将其重新构建。

这利用了:

代码:

class DataStructure
{
  private $data = [];

  public function __construct(string $data)
  {
    foreach (explode('|', $data) as $item_quantity) {
      list($quantity, $item) = explode(':', $item_quantity);
      $this->data[$item] = (int)$quantity;
    }
  }

  public function getItemQuantity(int $item): ?int
  {
    return $this->data[$item] ?? null;
  }

  public function setItemQuantity(int $item, int $quantity)
  {
    $this->data[$item] = $quantity;
  }

  public function __toString(): string
  {
    return implode('|', array_map(function ($item) {
      return $this->data[$item] . ':' . $item;
    }, array_keys($this->data)));
  }
}

请注意,就本示例而言,这不包括错误处理。

演示:https://3v4l.org/pqRQh

演示(与PHP 5.6兼容):https://3v4l.org/tK9Q9