2014-01-29 2 views
1

Я пытаюсь отобразить значения $i в моей корзине, так что выводит:

Order item 1 
Order item 2 
etc.. 

Поскольку мой индекс начинается с 0, я не хочу сказать, пункт заказа 0.

Я пробовал

$cartoutput .= " <tr><td width='20%'> Order Item ". $i+1." </td> 

но это не работает.

+1

Это будет работать нормально, если строка правильно процитирована до конца '$ cartoutput. =" Order Item ". $ i + 1. ""; 'Как это терпит неудачу для вас? –

+0

В качестве альтернативы, запустите '$ i' из 1 вместо 0. Что такое код цикла, который устанавливает и увеличивает' $ i'? –

+0

$ i начинается с 0. Спасибо! – user3150191

ответ

0

Есть несколько проблем. Ведение

$cartoutput .= "text". $i+1."text"; 
  1. поскольку нет разделителя между 1 и ., PHP ожидает, плавающее число, как 1.234 ... и выдает ошибку, так как нет никакого оператора (. быть десятичной точкой) после того, как 1. перед текстом.

  2. + для добавления чисел, . оператор строки конкатенации: так как они имеют одинаковый приоритет и их ассоциативность слева направо, имея пространство между 1 и .,

PHP будет делать

(("text" . $i) + 1) . "text" 

, который возвращает (0 + 1) . "text", т.е. "1text""text123" оценивается как 0, если $i 123)

Лучшее для того, чтобы быть безопасным, чтобы позволить PHP сделать пристройку между $i и 1, вставив круглые скобки:

$cartoutput .= "text" . ($i+1) . "text"; 

т.е. в вашем случае

$cartoutput .= " <tr><td width='20%'> Order Item " . ($i+1) . " </td> "; 
0

Просто используйте простой if условие

if($i > 0) 
$cartoutput .= " <tr><td width='20%'> Order Item ". $i+1." </td> 

Но вы используете $i+1 так что если даже вы начинаете с 0-based индекса, то он должен повторить Order item 1

0

Что это вывод?

Попробуйте следующее;

$j = $i + 1; 
$cartoutput .= '<tr><td width="20%"> Order Item ' . $j . '</td></tr>'; 
1

Добавить скобку на сумму:

$cartoutput .= " <tr><td width='20%'> Order Item ". ($i+1) . " </td> "; 
Смежные вопросы