Замените строку в массиве в массиве усеченной строкой
Я использую CodeIgniter для своего веб-сайта. Я также использую API tumblr на своем сайте, чтобы показывать опубликованные новости.
Поскольку показывать весь текст немного чересчур, я хочу сократить основную копию до 150 символов, я делаю это с помощью функции character_limiter
CI.
Код в моем "домашнем" контроллере выглядит следующим образом:
public function index() {
//Title for home page
$data['title'] = "Home - Welcome";
// Obtain an array of posts from the specified blog
// See the config file for a list of settings available
$tumblr_posts = $this->tumblr->read_posts();
foreach($tumblr_posts as $tumblr_post) {
$tumblr_post['body'] = character_limiter($tumblr_post['body'], 150);
}
// Output the posts
$data['tumblr_posts'] = $tumblr_posts;
// Load the template from the views directory
$this->layout->view('home', $data);
}
Проблема в том, что $tumblr_post['body']
не сокращается, когда я повторяю его на своей странице просмотра. Выполнение этого, как описано выше, работает в Asp.net (C#) но, похоже, это не работает в php кто-нибудь знает, почему и как это решить, или есть другой способ?
1 answers
Ваша проблема связана с циклом foreach
. Вам нужно добавить &
перед $tumblr_post
, чтобы передать его по ссылке. Это гарантирует, что вы действительно редактируете значения в массиве. Без &
вы просто редактируете локальную переменную, а не массив.
Попробуйте сделать это так (обратите внимание на &
):
foreach($tumblr_posts as &$tumblr_post) {
$tumblr_post['body'] = character_limiter($tumblr_post['body'], 150);
}