PHP array печатает только первую букву каждого элемента

#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;
}
  

Это должно сработать. Проблема может заключаться в том, что вы выполняете вызов функции на каждой итерации, а не временно сохраняете значение и выполняете цикл по нему.