Переменная, содержащая строку, ничего не повторяет - PullRequest
0 голосов
/ 24 апреля 2019

У меня есть функция, которая преобразует массив в массив со строками 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>"

Как насчет этой функции удаляет нужное мне значение?

1 Ответ

0 голосов
/ 26 апреля 2019

решаемая. Мне нужно было удалить строку 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>"

Благодаря Юнзену, который дал мне подсказку, где искать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...