使用Array Key =>跟踪项目数量的价值

时间:2014-11-26 23:59:41

标签: php arrays multidimensional-array key-value keyvaluepair

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

我希望将库存保存到数组中并跟踪分配的数量。我正在使用array_key_exists()来确定该类型是否已添加到数组中。

我的问题是我如何存储计数并在每次找到另一个时增加它,然后当我将它附加到另一个阵列时,重写它,如“4x 1TB Hard-Drive”,“2x 240GB SSD Drive”?现在它被添加为“1TB Hard-Drive1TB Hard-Drive1TB Hard-Drive1TB Hard-Drive”。

伪码:

<?

$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);

?>
按要求

$库存输出

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

1 个答案:

答案 0 :(得分:1)

而不是使用:

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在这方面真的不是一个好名字)