使用数组键 => 值跟踪项目计数


Using Array Key => Value to track count of items

我基本上有一个脚本,我在其中提取机器列表,然后提取当前在其中的所有库存。如果机器有超过 1 个相同类型的库存(例如驱动器),那么我当前的代码只是将它们附加到一个看起来很差的长字符串中。

相反,我想将库存保存到数组中并跟踪分配的金额。我正在使用 array_key_exists() 来确定该类型是否已添加到数组中。

我的问题是我如何存储计数并在每次找到另一个时增加它,然后当我将其附加到另一个阵列时,重写它,例如"4x 1TB 硬盘驱动器"、"2x 240GB SSD 驱动器"?现在它被添加为"

1TB硬盘1TB硬盘1TB硬盘1TB硬盘"。

伪代码:

<?
$row = array();
$arrDrive = array();
foreach ($inventory as $item)
{
    $invName = getInventoryName($dp_conn, $item["inv_id"]);
    $invType = getInventoryTypeName($item["type_id"], $dp_conn);
    if ($invType == "Hard-Drive")
    {
        if (array_key_exists($invName, $arrDrive))
        {
            $arrDrive[x]++; //???
        }
    }
}
// Get count of each type of drive and reformat it to 2x DRIVE NAME
$display = $arrDrive[count] . "x " . $arrDrive[Name];
array_push($row, $display);
?>

根据要求$inventory输出

  [1]=>
  array(3) {
    ["inv_id"]=>
    string(2) "16"
    ["type_id"]=>
    string(1) "2"
    ["sort_order"]=>
    string(1) "0"
  }

而不是使用:

if ($invType == "Hard-Drive")
{
    if (array_key_exists($invName, $arrDrive))
    {
        $arrDrive[x]++; //???
    }
}

请使用:

if (array_key_exists($item["type_id"], $arrDrive))
{
    $arrDrive[$item["type_id"]]++;
}
else
{
    $arrDrive[$item["type_id"]] = 1;
}

$arrDrive现在将拥有库存中每种类型的计数($arrDrive在这方面真的不是一个好名字)