Используя Array Key = & gt; Значение для отслеживания количества предметов

У меня в основном есть сценарий, в котором я извлекаю список машин, а затем извлекаю весь инвентарь, находящийся в настоящее время внутри них. Если на машине более одного инвентаря одного типа (например, дисков), мой текущий код просто добавляет их в длинную строку, которая выглядит довольно плохо.

Вместо этого я хотел бы сохранить инвентарь в массивы и отслеживать назначенную сумму. Я использую array_key_exists (), чтобы определить, был ли этот тип уже добавлен в массив.

Моя проблема в том, как сохранить счетчик и увеличивать его при каждом обнаружении другого, а затем, когда я добавляю его в другой массив, перезаписываем его, например, «4x 1TB Hard-Drive», «2x 240GB SSD Drive»? Прямо сейчас он добавлен как «Жесткий диск 1TB Hard-Drive1TB Hard-Drive1TB Hard-Drive1TB».

Псевдо-код:

<?

$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

Решение

Вместо того, чтобы использовать:

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 на самом деле не очень хорошее имя в этом отношении)

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]