【问题标题】:php foreach loop issue in IE11IE11中的php foreach循环问题
【发布时间】:2014-05-13 14:02:57
【问题描述】:

我对 IE 11 中的 php foreach 循环有一个非常奇怪的问题。在 FF、Chrome、Opera、Safari、IE 7 8 9 10 Foreach 循环中工作正常。

我将 for() 循环用于虚拟文本,它在 IE 11 中运行良好。但我不知道如何在 for 或 while 循环中调用数组

这是我的代码。

$img_num4 = 4;
$data_chunks = array_chunk($wp_images, $num_img);

echo '<ul id="id1">';
    foreach ($data_chunks as $data_chunk) {
        echo '<li class="id2">';
        foreach($data_chunk as $data) {
                    if($data['image_links_to'])
                        echo '<a href="'.$data['image_links_to'].'" '.$new_window.'>';
                    echo '<img src="'.$data['file_url'].'" class="logo-img" alt="" />';
                    if($data['image_links_to'])
                    echo '</a>';
        }
        echo '</li>';
    }
echo '</ul>';

我不知道为什么 foreach 循环仅在 IE 11 中不起作用。任何建议。

我也试试这个:

$img_num4 = 4;
$data_chunks = array_chunk($wp_images, $num_img);

echo '<ul id="id1">';
    for($i=1; $i<=10; $i++){
            echo '<li>'.$i.'</li>';
        }
    /*foreach ($data_chunks as $data_chunk) {
        echo '<li class="slide">';
        foreach($data_chunk as $data) {
                    if($data['image_links_to'])
                        echo '<a href="'.$data['image_links_to'].'" '.$new_window.'>';
                    echo '<img src="'.$data['file_url'].'" class="logo-img" alt="" />';
                    if($data['image_links_to'])
                    echo '</a>';
        }
        echo '</li>';
    }*/
echo '</ul>';

它在 IE 11 中显示了正确的数据。但是 foreach 循环不起作用

请告诉我如何在 for 或 while 循环中调用数组

【问题讨论】:

  • foreach 与 IE 检查您的元素样式无关。
  • 兄弟,它在 IE 8、9、10 中工作——我没有得到问题,我检查了一切
  • PHP 正在服务器上处理...检查您的 html 和样式,这将是问题所在。
  • “不起作用”是什么意思?无论浏览器如何,这个foreach 循环都会打印出相同的 HTML。是否有可能$new_window 有一些它不应该有的字符(例如'') - 如果是这样,它可能只是 Chrome、FF 等只是更好地处理格式错误的 HTML。尝试在 Web 浏览器上转到“查看源代码”以查看循环打印的内容。 x
  • 我认为@EmilyShepherd 是在问它是如何不起作用的。如果不知道它是如何不工作的,就无法知道问题可能是什么。

标签: php wordpress internet-explorer foreach


【解决方案1】:

使用 for 循环应该是这样的:

$img_num4 = 4;
$data_chunks = array_chunk($wp_images, $num_img);

echo '<ul id="id1">';
$len = $data_chunks.lenght;
for ($i = 0; $i < $len; $i++) {
    $data_chunk = $data_chunks[$i];
    echo '<li class="id2">';
    $len2 = $data_chunk.lenght;
    for ($j = 0; $j < $len2; $j++) {
        $data = $data_chunk[$j];
        if($data['image_links_to']) {
            echo '<a href="'.$data['image_links_to'].'" '.$new_window.'>';
        }
        echo '<img src="'.$data['file_url'].'" class="logo-img" alt="" />';
        if($data['image_links_to']) {
            echo '</a>';
        }
    }
    echo '</li>';
}
echo '</ul>';

while 循环在这里用处不大。

正如 cmets 中提到的,php 是一个 html 预处理器,因此它不需要任何浏览器即可工作。也许您应该在 IE11 浏览器中查看 html 源代码,看看有什么问题。

MAYBE(这是句子的重要部分)如果不包含任何文本,IE11 不会显示&lt;li&gt;。在这里你只放了一个&lt;img&gt;(有时带有链接)。

您应该尝试在 foreach 循环中用文本替换 img 标签。

阿波罗

【讨论】:

  • $data_chunks 是数组,所以 .lenght 对数组是正确的
  • 这意味着IE11的错误不是foreach,因为我的代码与初始代码完全相同。 ://
  • 查看我的答案(以 MAYBE 开头);-)
  • html源代码呢?可以吗? (我的意思是,就像你想要的那样)
  • 好的,我知道了,有一个条件是检查浏览器引擎,我使用旧版本的“MSIE”,现在我也将“rv:11.0”置于条件下......谢谢你的帮助
猜你喜欢
  • 1970-01-01
  • 2021-12-27
  • 2018-05-12
  • 2013-12-10
  • 2015-09-21
  • 2015-10-30
  • 1970-01-01
  • 1970-01-01
  • 2016-10-23
相关资源
最近更新 更多