Почему мои скобки превращаются в часть моей инструкции print?

#php #html

#php #HTML

Вопрос:

Пытаюсь отобразить результаты моего массива post. Для строки

 print "<tr><td>$prodqty</td>......" 
  

Мне нужно, чтобы моя {$gear{prodnum}[1]} последняя скобка закрывала элемент массива. Но по какой-то причине последняя закрывающая скобка становится частью моего оператора print (для тех, кто знаком с NetBeans, эта скобка становится оранжевой, а не черной, как предполагалось), и поскольку у меня их несколько if/else statements , закрывающая скобка перемещается дальше по строкам (особенно после ; чего я не понимаю), и я не могу понять, как заставить этот элемент массива закрыться.

Я пробовал оба {$gear{$prodnum}[1]} и {$gear{$prodnum[1]}} , и в любом случае это не сработает. Я также попробовал () вместо скобок для $prodnum.

Мой профессор был тем, кто помог мне написать этот раздел, и это работало, пока я не попытался добавить больше операторов if, а затем это прекратилось.

 if(array_key_exists('submit',$_POST))
{
    echo "<table><table align='center'><th colspan='3'>Total</th><tr>
<td>Quantity</td><td>Item</td><td>Extended Price</td></tr>";

    foreach($_POST['qty'] as $prodnum=>$prodqty){

        if($prodqty>0){

            print "<tr><td> $prodqty </td> <td>{$gear{$prodnum}[1]**}**</td>";
            print "<td>".($prodqty*$gear{$prodnum}[3])."</td></tr>";
        }
    };

elseif($prodqty==null)
{;
}

else {
    echo "Please enter a quantity.";
}
};
  

В идеале я хотел бы, чтобы prodqty шел после prodnum, но это не сработало бы таким образом. Также будут с благодарностью приняты любые предложения о том, как распечатать результаты $ POST, в которых добавлены значения, и забыть о тех, которые этого не делают. Я пытаюсь написать операторы if, требующие от отправителя ввода числа (без букв или слов) и исключающие другие элементы массива, если они не вводили для них количество.
Спасибо!

Комментарии:

1. {$gear{$prodnum}[1]**}** Я думаю, вы имеете в виду ${gear['prodnum'][1]} или что-то в этом роде

2. Кроме того, к чему относится это повисшее значение }; ?

3. Наконец, теперь, когда я исправил ваш отступ, вы можете заметить, что что-то не так с их размещением elseif (что, кстати, ничего не дает) и else

4. Не связано, но вам не нужно ; после закрытия блока.

Ответ №1:

Ваше if и else размещение показалось мне неправильно выровненным. Попытался реконструировать ваше утверждение наилучшим образом, как я думаю, вы пытаетесь достичь

 if(array_key_exists('submit',$_POST))
{
    echo "<table><table align='center'><th colspan='3'>Total</th><tr>
    <td>Quantity</td><td>Item</td><td>Extended Price</td></tr>";

    foreach($_POST['qty'] as $prodnum=>$prodqty){

       if($prodqty>0){

          print "<tr><td> $prodqty </td> <td>".$gear[$prodnum][1]."</td>";
                print "<td>".($prodqty*$gear[$prodnum][3])."</td></tr>";

       } elseif($prodqty==null)
       {
       }
    };
} else {
    echo "Please enter a quantity.";
}
  

Комментарии:

1. Я изменил номер $ gear prod на, как вы предложили, и это сработало! Большое вам спасибо.

2. приятно! рад, что смог помочь. Не забудьте отметить вопрос как отвеченный