#arrays #loops #printing
#массивы #циклы #печать
Вопрос:
Приведенный ниже код печатает только первую букву каждого элемента массива. Это меня совершенно сбило с толку.
require_once 'includes/global.inc.php';
print_r($site->bookmarkTags(1));
$index = 0;
foreach ($site->bookmarkTags(1) as $tag) {
echo $tag['$index'];
$index = $index 1;
}
возврат print_r:
Array ( [0] => Wallpapers [1] => Free )
цикл:
WF
Ответ №1:
Попробуйте echo $tag, а не $tag[‘$index’]
Поскольку вы используете foreach, значение уже взято из массива, и когда вы размещаете $tag[‘$index’], он будет печатать символ с позиции ‘$ index’ 🙂
Комментарии:
1. Почему PHP вообще это делает … или, скорее, делал. Я знаю, что они исправили это в версии 5.4 .
Ответ №2:
Кажется, вы попытались сделать то, что foreach уже делает…
Проблема в том, что вы фактически повторяете букву $ index не-массива, потому что foreach уже делает то, что вы, похоже, ожидаете от вашего $ index = $ index 1:
require_once 'includes/global.inc.php';
print_r($site->bookmarkTags(1));
$index = 0;
foreach ($site->bookmarkTags(1) as $tag) {
echo $tag; // REMOVE [$index] from $tag, because $tag isn't an array
$index = $index 1; // You can remove this line, because it serves no purpose
}
Ответ №3:
require_once 'includes/global.inc.php';
// Store the value temporarily instead of
// making a function call each time
$tags = $site->bookmarkTags(1);
foreach ($tags as $tag) {
echo $tag;
}
Это должно сработать. Проблема может заключаться в том, что вы выполняете вызов функции на каждой итерации, а не временно сохраняете значение и выполняете цикл по нему.