Без дополнительных подробностей в этом примере предполагается, что вы хотите, чтобы "комбинированный массив" устанавливался в ваших $_POST
данных ...
Сначала я бы удалил "скрытый" selected_items
ввод. Поскольку это массив входных данных, ключи индекса будут не выровнены.
Установка ключа индекса на определенное значение для selected_items
, quantities
и добавление нового ввода item
, должны помочь коррелировать ваши $_POST
данные следующим образом:
<?php foreach ($items as $item):
$itemID = $item['item_id'];
$itemTitle = $item['item'];
?>
<tr>
<td>
<li>
<div class="checkbox">
<input type='checkbox' name='selected_items[<?php echo $itemID; ?>]' value='<?php echo $itemTitle; ?>'/> <!-- Give your input $itemID key -->
<?php echo ucfirst($itemTitle); ?>
</div>
</li>
</td>
<td><input type='number' name='quantities[<?php echo $itemID; ?>]' value="0.00" step="0.01" /> </td> <!-- Give your input $itemID key -->
</tr>
<input type='hidden' name='available_items[<?php echo $itemID; ?>]' value="<?php echo $itemTitle; ?>" /> <!-- Give your input $itemID value -->
<?php endforeach; ?>
<?php
if(!empty($_POST)){
foreach($_POST['available_items'] as $itemID=>$itemTitle){ // <-- Loop through your "available_items"
$itemTitle = (!empty($_POST['selected_items'][$itemID])?$itemTitle:0); // <-- this changes the itemTitle based on whether !empty($_POST['selected_items'][$itemID])
$Qty = (!empty($_POST['selected_items'][$itemID])&&!empty($_POST['quantities'][$itemID])?$_POST['quantities'][$itemID]:0); // <-- Checks for quantities
$CombinedArray[$itemTitle] = $Qty;
}
print_r($CombinedArray);
}
?>
Ваш результат будет примерно таким:
"0"=>0
"Coffee"=>44
"Egg"=>56
Это потому, что у вас есть потенциал для создания дубликатов ключей в вашем $CombinedArray
.
Удаление этой строки $itemTitle = (!empty($_POST['selected_items'][$itemID])?$itemTitle:0);
:
<?php
if(!empty($_POST)){
foreach($_POST['available_items'] as $itemID=>$itemTitle){ // <-- Loop through your "available_items"
$Qty = (!empty($_POST['selected_items'][$itemID])&&!empty($_POST['quantities'][$itemID])?$_POST['quantities'][$itemID]:0); // <-- Checks for quantities
$CombinedArray[$itemTitle] = $Qty;
}
print_r($CombinedArray);
}
?>
Результатом будет что-то вроде:
"Bread"=>0
"Coffee"=>44
"Egg"=>56
"Cake"=>0