我有一個陣列充滿了子陣列,而這些陣列又充滿了源名稱和它們的網站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