Расчет многомерного массива

0

Это Array который я хочу отобразить в HTML table.

$itemss =array(
array( "name"=>"Blue Pen", "Description"=>"Atlas", "UnitPrice"=>13.50, " AvailableStock "=>200),
array( "name"=>"80 P-Book", "Description"=>"Atlas", "UnitPrice"=>65," AvailableStock "=>100),
array( "name"=>"A4 Paper 500", "Description"=>"Atlas",  "UnitPrice"=>500," AvailableStock "=>20),
array( "name"=>"Red Pen", "Description"=>"Atlas", "UnitPrice"=>13.50," AvailableStock "=>256),
array( "name"=>"Back Pen", "Description"=>"Atlas",  "UnitPrice"=>13.50," AvailableStock "=>156) );

Результат должен быть таким же в таблице.

Item Name    |Description|Unit Price|Available Stock|Stock Value

Blue Pen         Atlas      13.50       200           xxxx


Total Stock Value                                   |xxxxxx

И это то, что я сделал до сих пор:

<?php
$itemss =array(
array( "name"=>"Blue Pen", "Description"=>"Atlas","UnitPrice"=>13.50,"AvailableStock"=>200),
array( "name"=>"80 P-Book", "Description"=>"Atlas", "UnitPrice"=>65," AvailableStock"=>100),
array( "name"=>"A4 Paper 500","Description"=>"Atlas","UnitPrice"=>500,"AvailableStock"=>20),
array( "name"=>"Red Pen", "Description"=>"Atlas", "UnitPrice"=>13.50,"AvailableStock"=>256),
array( "name"=>"Back Pen", "Description"=>"Atlas", "UnitPrice"=>13.50,"AvailableStock"=>156) );


?>
<table border="1">
<tr>
<th>Item Name</th>
<th>Description</th>
<th>Unit Price</th>
<th>Available Stock</th>
<th>Stock Value</th>


</tr>
<?php
foreach($itemss as $Rockband)
{
echo '<tr>';
foreach(array_values($Rockband) as $key => $item)
{
echo "<td>$item</td>";

}
echo '</tr>';
}
?>
</table>
  • 2
    Какой вопрос?
  • 0
    В вашем массиве нет Stock Value , ваши подмассивы содержат только 4 элемента.
Показать ещё 1 комментарий
Теги:
arrays
html-table

3 ответа

0
Лучший ответ
<table border="1">
<tr>
<th>Item Name</th>
<th>Description</th>
<th>Unit Price</th>
<th>Available Stock</th>
<th>Stock Value</th>


</tr>
<?php
$TotalStockValue = 0;

foreach($itemss as $Rockband)
{
    echo '<tr>';
    foreach( $Rockband as $key => $value )
    {
        echo "<td>$value</td>";
    }
    $StockValue = ( $Rockband["UnitPrice"] * $Rockband["AvailableStock"] );
    echo '<td>' . $StockValue . '</td>';
    echo '</tr>';

    $TotalStockValue += $StockValue;
}
echo '<tr><td colspan="4">Total Stock Value</td><td>' . $TotalStockValue . '</td></tr>';
?>
</table>
  • 0
    Стоимость акции = Цена за единицу товара * Доступный запас
  • 0
    @ user3312802 хорошо, см. отредактированный ответ
Показать ещё 2 комментария
0

Вы могли бы использовать foreach в массиве, как это, используя функцию list

$total_stock_value = 0;

foreach($itemss as $one_item) {
    // map the array values to the variables
    list($name, $desc, $price, $stock) = $one_item; 
    $stock_val = $price * $stock;
    $total_stock_value += $stock_val;

    echo '<tr><td>' . $name . '</td><td>' . $desc . '</td><td>...</td></tr>';
}

Это должно распечатать тело для таблицы, как вы описали. У вас есть массив массивов. Таким образом, код выше проходит через каждый элемент из $itemss чтобы прочитать отдельные массивы в $one_item один за другим, и для каждого из них он перечисляет (или карты, если хотите) значения этой подрегрессии $one_item в заданные переменные ($name, $desc,...). Затем я просто выводя переменные в формате, который вы описали в вопросе.

Редактировать Я видел ваше обновление о Stock Value и Total Stock Value поэтому я более точно отредактировал свой ответ.

0

Ты на правильном пути. Однако вам не нужно использовать array_values.

<?php
$totalValue= 0;
foreach($itemss as $Rockband)
{
    $stockValue = $Rockband["UnitPrice"] * $Rockband["AvailableStock"];
    $totalValue += $stockValue;
    echo '<tr>';
    foreach( $Rockband as $key => $value )
    {
        echo "<td>$value</td>";
    }
    echo "<td>$stockValue</td>";
    echo '</tr>';
}

echo $totalValue;
?>

Ещё вопросы

Сообщество Overcoder
Наверх
Меню