PHP получает как значение массива, так и ключ массива

#php #arrays #key

#php #массивы #Клавиша

Вопрос:

Я хочу запустить цикл for через массив и создать элементы привязки для каждого элемента в массиве, где ключом является текстовая часть, а значением — URL.

Как я могу это сделать, пожалуйста?

Спасибо.

Комментарии:

1. de.php.net/manual/en/control-structures.foreach.php

2. Что касается «for», а не «foreach», вы, вероятно, могли бы обойти массив с помощью next () и захватить ключ с помощью key()

Ответ №1:

Это должно сделать это

 foreach($yourArray as $key => $value) {
    //do something with your $key and $value;
    echo '<a href="' . $value . '">' . $key . '</a>';
}
  

Редактировать: Согласно комментарию Capsule — заменено на одинарные кавычки.

Комментарии:

1. Пройдет еще 13 минут, прежде чем я смогу задать это как правильный ответ, но я это сделаю.

2. Если вы хотите отредактировать значение в цикле, измените $value на amp;$value . Затем любые изменения, которые вы вносите в $value в цикле, повлияют на исходный массив. Для получения дополнительной информации смотрите страницу PHP в разделе ссылки: php.net/manual/en/language.references.php

3. -1 за использование одинарных кавычек в HTML-коде. Нарушило бы проверку некоторыми типами документов (например, XHTML)

4. @Capsule — Буду честен, я даже не знал, что это так. Исходя из ASP.NET фон, в котором вы просто предполагаете, что страница не будет проверяться, поэтому я никогда не утруждал себя проверкой подобных вещей. В конечном итоге я использовал приведенный выше синтаксис из чистого удобства в PHP

5. @Marek кстати, PHP работает быстрее при использовании одинарных кавычек, потому что он не пытается интерпретировать какие-либо переменные или специальные символы внутри строки. Так что вам определенно следует это использовать 😉 Я бы также объединил . "n" в целях удобства чтения при просмотре исходного кода HTML, даже если я определенно не рекомендую использовать echo в середине PHP-скрипта.

Ответ №2:

Для некоторых конкретных целей вы можете захотеть узнать текущий ключ вашего массива, не заходя в цикл. В этом случае вы могли бы сделать следующее:

 reset($array);
echo key($array) . ' = ' . current($array);
  

Приведенный выше пример покажет ключ и значение первой записи вашего массива.

Следующие функции не очень хорошо известны, но могут быть весьма полезны в очень специфических случаях:

 key($array);     //Returns current key
reset($array);   //Moves array pointer to first record
current($array); //Returns current value
next($array);    //Moves array pointer to next record and returns its value
prev($array);    //Moves array pointer to previous record and returns its value
end($array);     //Moves array pointer to last record and returns its value
  

Комментарии:

1. Я думаю, что SPL делает это именно так. Спасибо.

Ответ №3:

Вот так:

 $array = array(
    'Google' => 'http://google.com',
    'Facebook' => 'http://facebook.com'
);

foreach($array as $title => $url){
    echo '<a href="' . $url . '">' . $title . '</a>';
}
  

Ответ №4:

В контексте шаблона это было бы:

 <?php foreach($array as $text => $url): ?>
    <a href="<?php echo $url; ?>"><?php echo $text; ?></a>
<?php endforeach; ?>
  

Вы не должны писать свой HTML-код внутри своего PHP-кода, следовательно, избегайте повторения кучи HTML.

Это ничего не фильтрует, я надеюсь, что ваш массив чист 😉