我有一个函数,可以将数组转换为带有要打印的html代码行的数组。
仅当特定字符串包含数字1时,才会创建我的html行之一。Var_dump显示该字符串实际上包含1。然后html行将字符串连接到一堆空格(用于html的整齐格式) )。
但是,当我回显此html行时,字符串不存在。如果我将html行中的字符串替换为字符1,那么它将正确显示。
如果我在一个if语句中var_dump字符串,检查字符串是否包含“ 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>
这是预期的。 $ item ['sta']的var_dump:
string(1) "0"
如果我将代码更改为:
$html[] = ' <div class="qty">'.$item['qty'].'</div>';
我得到了以下消息来源:
<div class="qty"></div>
$ item ['qty']的var_dump:
string(1) "1"
编辑2:
以下代码块似乎正在从我的html中删除$ item ['qty']值:
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>"
该功能正在删除我需要的值吗?
答案 0 :(得分:0)
已解决。我需要删除foreach行,因为它弄乱了给我的itemToHtml函数的内容:
function prepareItems ($itemArray,$containerSize,$page,$table) {
$num = 0;
for ($i = 1; $i <= 4; $i++) {
for ($i2 = 1; $i2 <= $containerSize; $i2++) {
$preparedItems[$i][$i2] = $this->itemToHtml($page,$table,$num,$itemArray[$num]);
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(58) " <div class="qty">1</div>"
感谢yunzen给我一些提示。