我有一个阵列充满了子阵列,而这些阵列又充满了源名称和它们的网站URL,如纽约时报和http://newyorktimes.com。foreach循环中的动态编号变量
我显示的链接列表中的标题链接到网址,我想在每个链接前显示网站的图标 - 理论上的一个简单的想法。
现在,链接列表正常工作,拉动收藏夹图标的代码正在返回其正确的URL,并且基本上所有的工作都正常,除了它仅适用于第一个链接并且此后页面会变得混乱。我终于意识到,由于需要为foreach循环中的每个url运行代码,因此当循环第二次运行时必定会发生一些变量冲突。
问题是,我的列表是动态填充(在WordPress中),所以我永远不知道数组中的链接数量,也不知道它们是什么,所以我想知道的是:有没有一种方法可以动态地编号或者每次foreach循环时改变变量,以便不存在多个相同变量的实例?
这里是我的代码的部分是这样的问题:
echo '<ul class="ll_list">';
foreach ($ll_entries as $ll_entry) {
/*----- GET FAVICON -----*/
/* This code needs to run for each url in the array, pull the
favicon, and then the favicon's url needs to be echoed down
below. */
$url = esc_attr($ll_entry['ll_url']);
$doc = new DOMDocument();
$doc->strictErrorChecking = FALSE;
$doc->loadHTML(file_get_contents($url));
$xml = simplexml_import_dom($doc);
$arr = $xml->xpath('//link[@rel="shortcut icon"]');
$favicon = $arr[0]['href'];
/*-----------------------*/
echo '<li class="ll_list_item">';
if (file_exists($favicon)) {
echo '<img class="ll_logo_img" src="'.$favicon.'" alt="'. esc_attr($ll_entry['ll_title']).'" /> ';
} else {
echo '<span class="dashicons dashicons-arrow-right"></span> ';
}
echo '<a href="' . esc_attr($ll_entry['ll_url']) . '" title="Visit ' . esc_attr($ll_entry['ll_title']) . ' »" target="_blank">';
echo esc_attr($ll_entry['ll_title']);
echo '</a>';
echo '</li>';
}
echo '</ul>';
然后正确的变量也将不得不叫下面的<img>
标记,如果图标文件存在只回荡......等等也许会在工程中抛出扳手?
我已经搜索了很多关于此的内容,并且发现了一些关于“变量变量”的文档。我不完全确定如何在这里使用它们,但是我可以用作变量的数组中没有任何东西,除非有某种方法可以从URL中去除特殊字符并使用它。
任何帮助将不胜感激,谢谢!如果有一种更简单的方法来实现我的目标,我就会全神贯注。
你有一些错误(看看你的服务器/ PHP日志)? – akmozo
您提供的信息太多。这听起来像你需要做的就是做一个for循环count(array)作为你正在计算的数字所属于的,或者只是在你正在使用的变量上附加一个计数。但很难说,因为你刚刚倾销了这么多的信息,将其隔离得更多。 – Andrew
@Shoelaced顺便说一句,你发布的代码是好的,我测试了3个URL(NYTimes,SO和谷歌),它运行良好,所以尝试验证其他点... – akmozo