объединение текстовых значений для доступа к элементу массива в php

#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. Любой опытный пользователь скажет вам, что если вы пытаетесь динамически создавать имя переменной или получать к нему доступ, то вам следует использовать массив.