У меня есть функция, которая преобразует массив в массив со строками HTML-кода для печати.
Одна из моих HTML-строк создается, только если конкретная строка содержит число 1. Var_dump показывает строкуфактически содержит 1. Строка html затем объединяет строку в кучу пробелов (для аккуратного форматирования html).
Однако, когда я повторяю эту строку html, строка не появляется.Если я заменю строку в моей строке html на символ 1, то он будет отображаться правильно.
Если я var_dump, строка внутри оператора if проверяет, содержит ли строка «1», то это дает мне строку результата (1) «1», чего я и ожидаю.
Строка, о которой идет речь:
$item['qty']
Код, о котором идет речь:
if ($item['qty'] == '1') {
$html[] = '<div class="qty">'. $item['qty'] .'</div>';
}
В результате ничего не отображается,Если я использую следующий код, то я вижу символ 1 в месте, которое я ожидаю:
if ($item['qty'] == '1') {
$html[] = '<div class="qty">1</div>';
}
И использование var_dump дает следующий результат:
if ($item['qty'] == '1') {
var_dump($item['qty']);
exit();
}
string(1) "1"
Моя строка четкосодержит значение 1. Оно явно принимается оператором if.Все остальные мои строки абсолютно эхо.
Редактировать:
Упрощенное воспроизведение проблемы, поэтому, если я использую следующую строку:
$html[] = ' <div class="qty">'.$item['sta'].'</div>';
В моем источнике получено следующее:
<div class="qty">0</div>
Это ожидается.var_dump of $ item ['sta']:
string(1) "0"
Если я изменю код на:
$html[] = ' <div class="qty">'.$item['qty'].'</div>';
, я получу следующий источник:
<div class="qty"></div>
var_dump of $ item ['qty']:
string(1) "1"
Edit 2:
Кажется, что следующий блок кода удаляет $ item ['qty'] значение из моего html:
function prepareItems ($itemArray,$containerSize,$page,$table) {
$num = 0;
foreach ($itemArray as $item) {
for ($i = 1; $i <= 4; $i++) {
for ($i2 = 1; $i2 <= $containerSize; $i2++) {
$preparedItems[$i][$i2] = $this->itemToHtml($page,$table,$num,$item);
if ($num == 0) { var_dump(htmlspecialchars($preparedItems['1']['1']['3'])); }
$num++;
}
}
}
var_dump(htmlspecialchars($preparedItems['1']['1']['3']));exit();
return $preparedItems;
}
Это дает следующий вывод var_dump:
string(58) " <div class="qty">1</div>" string(57) " <div class="qty"></div>"
Если я добавлю разрыв во все мои циклы, то получу правильный вывод var_dump:
function prepareItems ($itemArray,$containerSize,$page,$table) {
$num = 0;
foreach ($itemArray as $item) {
for ($i = 1; $i <= 4; $i++) {
for ($i2 = 1; $i2 <= $containerSize; $i2++) {
$preparedItems[$i][$i2] = $this->itemToHtml($page,$table,$num,$item);
if ($num == 0) { var_dump(htmlspecialchars($preparedItems['1']['1']['3'])); }
$num++;
break;
}
break;
}
break;
}
var_dump(htmlspecialchars($preparedItems['1']['1']['3']));exit();
return $preparedItems;
}
var_dump:
string(58) " <div class="qty">1</div>" string(58) " <div class="qty">1</div>"
Как насчет этой функции удаляет нужное мне значение?