#php
#php
Вопрос:
Я пытаюсь создать функцию в php, которая будет считывать данные из массива. Я пытаюсь объединить текст и идентификационный номер массива, чтобы прочитать значение в массиве, однако возвращается объединенный текст, а не значение массива.
Вот мой код:
//arrays with words in dictionary
$dictionary_word1 = array("test1","test2","test3");
$dictionary_word2 = array("test4","test5","test6");
$dictionary_word3 = array("test7","test8","test9");
$word_to_lookup = "dictionary_word_1";
//value to send to function
$returned_word = convert_word($word_to_lookup);
//value returned from function
echo "<br>the returned word from the function is " . $returned_word;
//the text "$dictionary_word_1[2]" is displayed instead of array value
echo "<br>the value in the array is " . $dictionary_word1[2];
//this displays correcty as "test3"
function convert_word($word_to_convert)
{
global $dictionary_word1;
$converted_word = '$'.$word_to_convert .'[2]';
return $converted_word;
}
Кто-нибудь может дать мне какие-либо советы о том, где я ошибаюсь?
Комментарии:
1.
$converted_word = ${$word_to_convert}[2];
Но есть лучшие способы делать то, что вы делаете.
Ответ №1:
Вам нужно ссылаться на переменную таким образом, чтобы сделать то, что вы пытаетесь (см. PHP: Переменные Переменные и PHP: синтаксический анализ переменных):
$converted_word = ${$word_to_convert}[2];
Однако, обратите внимание на разницу между dictionary_word_1
и $dictionary_word1
? Не сработает.
В любом случае, в любое время, когда вы делаете это, вам было бы лучше с массивом. В данном случае к многомерному массиву. Рассмотрим:
$words[1] = array("test1","test2","test3");
$words[2] = array("test4","test5","test6");
$words[3] = array("test7","test8","test9");
Тогда вы всегда используете $words
просто изменение индекса, а затем использование слова из этого массива.
Комментарии:
1. Большое спасибо. Фигурные скобки сработали, и спасибо, что заметили дополнительное подчеркивание. Работает, как ожидалось. Я просто изучаю php и играю с функциями. Я буду тестировать многомерные массивы.
2. NP. Любой опытный пользователь скажет вам, что если вы пытаетесь динамически создавать имя переменной или получать к нему доступ, то вам следует использовать массив.