包含字符串的变量没有回显任何内容

时间:2019-04-24 09:44:33

标签: php html codeigniter

我有一个函数,可以将数组转换为带有要打印的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>"

该功能正在删除我需要的值吗?

1 个答案:

答案 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给我一些提示。