【问题标题】:Empty Variable when inside the <select> markup<select> 标记内的空变量
【发布时间】:2011-10-13 15:19:14
【问题描述】:

只是想知道是否有人知道为什么会发生此错误。

我有以下代码

<?php 
foreach($productArray as $key=>$value)
{
    if ($key == 'cod_prod')
    {
?>
      <td>


} } ?>

我没有完成其余的代码,因为它工作正常,除了这部分。

在上面的示例中,如果我将 var_dump($codeList) 放在第一个位置,它会很好地打印出数组的结果,如果我将 var_dump($codeList) 放在第二个位置,它会返回空。如果我将两个 var_dumps 都放在两个位置,则会发生同样的事情

要使用 var_dump($codeList) 检查此即时消息,请取出选项和其他所有内容,如果我插入 select 标记,则数组只需返回 EMPTY p>

有什么想法吗?

更新

$codeList 正在控制器中生成,在本例中为此处

    $this->setVar(array(
        'DataAtual' => $Solicitacao->DataAtual,
        'ClienteEmail' => $Solicitacao->clientEmail,
        'ClienteNome' => $Solicitacao->userName,
        'ClienteTelefone' => $Solicitacao->userTelefone,
        'VendedorNome' => $Solicitacao->VendedorNome,
        'VendedorEmail' => $Solicitacao->VendedorEmail,
        'VendedorTelefone' => $Solicitacao->VendedorTelefone,
        'PagamentoForma' => $Solicitacao->PagamentoForma,
        'PagamentoPrazo' => $Solicitacao->PagamentoPrazo,
        'PagamentoFrete' => $Solicitacao->PagamentoFrete,
        'Produtos' => $Solicitacao->ProdutosArr,
        'Observacoes' => $Solicitacao->ObservacoesArr,
        'MensagemEmail' => $Solicitacao->MensagemEmail,
        'PageTitle' => $Solicitacao->PageTitle,
        'Action' => $Solicitacao->Acao,
        'PageType' => $Solicitacao->PageType,
        'vendorInfo' => $Solicitacao->vendorInfo,
        **'codeList' => $Solicitacao->codeList,**
        'moneyFields' => $Solicitacao->moneyFields,
        'coresArr' => $Solicitacao->coresArr
        ));

$Solicitacao->codeList 正在模型中生成,这里(只是 wordpress 制作的一个简单数组)

 $getCodesListSQL = "SELECT cod_prod FROM wp_products ORDER BY cod_prod ASC;";
        $this->codeList = $wpdb->get_results($getCodesListSQL);

继续

一个完整的数组被转储

 var_dump($codeList);
    echo '<select>';
    //var_dump($codeList);

一个空数组被转储

 //var_dump($codeList);
    echo '<select>';
    var_dump($codeList);

【问题讨论】:

  • 生成的html代码是什么样子的?
  • 您查看结果页面还是查看其来源?当您查看页面时:您是否知道 select 要求其内容为
  • $codeList 来自哪里?
  • 我在您的代码中没有看到打印$codeList 值的任何地方。你能显示更多代码吗?

标签: php arrays foreach scope


【解决方案1】:

输出不可见,因为它位于 SELECT 元素中。 SELECT 只接受 OPTION 元素作为子元素。在生成的 HTML 上查看源代码并查看这些值是否确实存在,只是浏览器不知道如何处理它们。

这取决于浏览器,但是:当您查看生成的 HTML 时,如果它显示在可以折叠节点的视图中,那么它会通过在显示的元素上调用 innerHTML 函数来获取 HTML。如果内部 HTML 无效,则它不会显示任何内容。

内容在那里,但浏览器选择在您用于查看生成的 HTML 的视图中忽略并删除它。

【讨论】:

  • 不,我正在转储 var 结果以查看其中的内容,就像通过放置
  • 这取决于浏览器,但是:当您查看生成的 HTML 时,如果它显示在可以折叠节点的视图中,它会通过在显示的元素上调用 innerHTML 函数来获取 HTML。如果内部 HTML 无效,则不显示任何内容。
  • 是的,没错,刚刚检查了源代码,它们都在那里。我目前正在使用 chrome 进行调试,也许是时候回到 firefox 进行调试了?
  • 您使用的是 Inspect Element 还是 View page source?
  • 我首先尝试使用 Inspect Element,但没有显示任何内容,但是我能够在 View Page Source 中找到它
【解决方案2】:

这是否给出了您想要的结果?

 <?php 
        foreach($productArray as $key=>$value)
        {
            if ($key == 'cod_prod')
            {
              echo '<td>';
              echo '<select>';                                            

                 foreach($codeList as $codigo)
                 {
                    //DO STUFF
                 }

              echo '</select>';
              echo '</td>';     
            }
        }
?>

【讨论】:

  • 不,完全一样的事情,奇怪吧?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-08-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多