У меня есть массив полных подмассивов, которые, в свою очередь, являются полными именами источников и их веб-сайта URL, такими как The New York Times и http://newyorktimes.com.Динамически нумерованные переменные в цикле Еогеаспа
Я показываю список ссылок, в которых название ссылается на URL-адрес, и я хотел бы показать значок знака сайта перед каждой ссылкой - это простая идея в теории.
В настоящее время список ссылок прекрасно работает, код, который тянет значок, возвращает его правильный URL-адрес, и в основном все работает нормально, за исключением того, что он работает только для первой ссылки, и страница становится беспорядочной после этого. Я, наконец, понял, что, поскольку код должен быть запущен для каждого url в цикле foreach, должен произойти некоторый конфликт переменных, когда цикл выполняется во второй раз.
Проблема заключается в том, что мой список динамически заполнен (в 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>
тег ниже, который только вторит если файл существует Favicon ... так что, возможно, тоже забрасывает ключ в работах?
Я искал много об этом, и я нашел немного документации о «переменных переменных». Я не совсем уверен, как их использовать здесь, но в массиве нет ничего, что я мог бы использовать как переменную, если только не удастся удалить специальные символы из URL-адреса и использовать это.
Любая помощь была бы высоко оценена, спасибо! Если есть более простой способ достичь моей цели, я все уши.
У вас есть некоторые ошибки (посмотрите на журналы сервера/PHP)? – akmozo
Вы даете слишком много информации. Похоже, что все, что вам нужно сделать, это сделать цикл for с count (array) как число, которое вы считаете d собственным, или просто добавить счет к переменной, с которой работаете. Но это сложно сказать, потому что вы просто свалили столько информации, изолировали ее больше. – Andrew
@Shoelaced BTW, ваш опубликованный код в порядке, я проверил его с 3 URL (NYTimes, SO и google), и он работает хорошо, поэтому попробуйте проверить другие моменты ... – akmozo