我基本上有一个脚本,我在其中拉出一个机器列表,然后拉出当前内部的所有库存。如果机器有超过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"
}
答案 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在这方面真的不是一个好名字)