【问题标题】:php echo statement inside $output$output 中的 php echo 语句
【发布时间】:2015-01-19 14:49:36
【问题描述】:

我有以下 php 代码:

$skizzar_masonry_item_width = $masonry_item_width;
$skizzar_masonry_item_padding = $masonry_item_padding;
$skizzar_double_width_size = $masonry_item_width*2 +$masonry_item_padding;

$output .= '<style>.skizzar_masonry_entry.skizzar_ma_double, .skizzar_masonry_entry.skizzar_ma_double img {width:'.$skizzar_double_width_size.'}</style>';

return $output;

但由于某种原因,$skizzar_double_width_size 的值没有被添加到 $output 中 - 有没有办法在输出变量中回显一个值?

【问题讨论】:

  • 在添加内容之前,您是否使用 $output = ""; 初始化了您的 $output 变量?
  • 如果 error_reporting 关闭,@Rizier123 应该不会有所作为。
  • 你确定$skizzar_double_width_size 有值吗?
  • var_dump($skizzar_double_width_size) 会告诉您该变量中是否有任何内容。鉴于您之前的问题,您真的应该坐下来更好地学习 php 语法。 “在输出变量中回显一个值”?
  • 然后在包含这个css的页面上做一个view source。很可能该值在那里,但由于您没有包含任何单位而无法正常工作。 width:485 在 css 中是非法的。它应该是width:485px 或其他。

标签: php variables output


【解决方案1】:

正如@Rizier123 提到的,确保在尝试追加之前初始化任何字符串变量。

$var = ''; $var .= 'I appended'; $var .= ' a string!';

我还强烈建议您不要使用内联样式以及使用内联 PHP 生成它们。事情很快就会变得非常混乱。

【讨论】:

  • 如果变量被实例化并没有什么区别,是的,如果 error_reporting 开启,你会得到一个错误。但是$output 仍将包含分配的值。
  • 从原始问题的外观来看,很难确定是否已经定义了其他变量,因此很难说比这更多。我将扩展一些调试信息。实际上看起来我没有代表所以我必须在这里做。如果是普通 PHP,他应该使用 var_dump()print_r()echo 检查未正确设置的变量的值,然后关闭 die() 以停止脚本执行。这是我能想到的唯一其他解释,或者发布的代码在一个甚至没有被调用的函数中。
【解决方案2】:

在这种情况下,您需要在恐慌之前检查您在计算中使用的所有变量是否有效。

那就试试吧

echo 'before I use these values they contain<br>';
echo '$masonry_item_width = ' . $masonry_item_width . '<br>';
echo '$masonry_item_padding = ' . $masonry_item_padding . '<br>';


$skizzar_masonry_item_width = $masonry_item_width;
$skizzar_masonry_item_padding = $masonry_item_padding;
$skizzar_double_width_size = $masonry_item_width*2 +$masonry_item_padding;

echo 'after moving the fields to an unnecessary intemediary field<br>';
echo '$skizzar_masonry_item_width = ' . $skizzar_masonry_item_width . '<br>';
echo '$skizzar_masonry_item_padding = ' . $skizzar_masonry_item_padding . '<br>';
echo '$skizzar_double_width_size = ' . $skizzar_double_width_size . '<br>';


$output .= '<style>.skizzar_masonry_entry.skizzar_ma_double, .skizzar_masonry_entry.skizzar_ma_double img {width:'.$skizzar_double_width_size.'}</style>';

echo $output;

这应该可以确定哪些字段会导致您出现问题。

另外,虽然测试始终使用display_errors = On 运行,但从长远来看,它可以节省大量时间。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-08-12
    • 1970-01-01
    • 1970-01-01
    • 2015-02-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多