foreach()触发'Uncaught RangeError:最大调用堆栈大小超过'


foreach() triggers 'Uncaught RangeError: Maximum call stack size exceeded'

我遇到了一个简单的php foreach属性类(奇数/偶数)到div的麻烦。我认为我有一个语法错误,因为它的工作,但循环没有结束(未捕获的RangeError:最大调用堆栈大小超过在控制台:

<?php
$count = 0;
foreach( $this->boutiques_details as $key => $value){
     if ($value->ville == $this->ville)     {
echo '<div data-lng="$this->escape($value->longitude)" data-lat=" $this->escape($value->latitude)" class="' . (++$count%2 ? "shop odd" : "shop even") . '">';
?>
        <p><b><?php echo $this->escape($value->ville)?></b></p>
        <p><?php echo $this->escape($value->quartier)?></p>
        <p><?php echo $this->escape($value->adresse)?></p>
        <p><?php echo $this->escape($value->num_contact_1)?></p>
        </div>
  <?php
        }
 }
?>

谢谢你的帮助!

你要回显的字符串中有一些PHP代码,但PHP不会对其求值,因为它在字符串中:

echo '<div data-lng="$this->escape($value->longitude)" data-lat="$this->escape($value->latitude)" class="' . (++$count%2 ? "shop odd" : "shop even") . '">';

将以上内容替换为以下内容:

echo '<div data-lng="' . $this->escape($value->longitude) . '" data-lat="' . $this->escape($value->latitude) . '" class="' . (++$count%2 ? "shop odd" : "shop even") . '">';

这样,PHP部分(如$this->escape($value->longitude))将被PHP识别,它们的结果将被插入到您要echo的字符串中。

因为你是直接echo PHP部分,javascript (jQuery)可能识别美元符号($),试图做一些事情,但不知道如何,并失败了。