Как получить только значение ассоциативного массива в PHP (без ключа)?

У меня есть класс KeyValueSystem, который анализирует файл, в котором хранятся пары строк ключ=значение и строит из этого ассоциативный массив.

<?php
class KeyValueSystem {
    protected $array = [];
    
    public static function parse_File($file_name) {
        $file_data = explode('\n', file_get_contents($file_name));
        $parsed_data = new KeyValueSystem;
        foreach ($file_data as $line) {
            $line = explode('=', $line);
            $parsed_data->add_Pair($line[0], $line[1]);
        }
        return $parsed_data;
    }
    
    public function add_Pair($key, $value) {
        $this->array[$key] = $value;
    }
    
    public function delete_Pair($key) {
        unset($this->array[$key]);
    }
    
    public function get($key) {
        return $this->array[$key];
    }
}
?>

В корне проекта есть файл example.fgh.

hello=Hello, world!
howru=How are you?

С основного файла PHP я создаю объект KeyValueSystem с использованием метода parse_File, который читает тот файл и создаёт ассоциативный массив.

<?php
require_once('libraries/smarty/Smarty.class.php');
require_once('tools.php');

$smarty = new Smarty;

$data = KeyValueSystem::parse_File('example.fgh');
$smarty->assign('assigned_text', "{$data->get('hello')}");
$smarty->display('pages/home.tpl');
?>

Здесь я пытаюсь отобразить текст из файла под ключом howru, но возникает странная проблема — на странице отображается не только значение из ассоциативного массива, но после и его ключ. Мне нужно чтобы отображалось только значение (текст How are you?). введите сюда описание изображения

Что исправить в коде?


Ответы (1 шт):

Автор решения: Алексей Шиманский

Заменить

explode('\n', $str);

на

explode("\n", $str);

Т.к. в одинарных кавычках это уже не управляющая последовательность, а просто строка ( https://www.php.net/manual/ru/language.types.string.php#language.types.string.syntax.double )

→ Ссылка