#php #arrays #casting
#php #массивы #Кастинг
Вопрос:
Я столкнулся с проблемой в коде PHP OOPS.
Мой код:
class Settings
{
private $client_addr = array(
'ClientID' => array('maxlength'=>'10','IsNull'=>'n'),
'ClientAddressType' => array('maxlength'=>'12','IsNull'=>'y'),
'ClientAddressLine1' => array('maxlength'=>'30','IsNull'=>'y'),
'ClientAddressLine2' => array('maxlength'=>'30','IsNull'=>'y'),
'ClientCounty' => array('maxlength'=>'30','IsNull'=>'y'),
'ClientCity' => array('maxlength'=>'30','IsNull'=>'y'),
'ClientState' => array('maxlength'=>'2','IsNull'=>'y'),
'ClientZip' => array('maxlength'=>'9','IsNull'=>'y'),
);
private $client_general = array(
'PayerID' => array('maxlength'=>'64','IsNull'=>'n'),
'ProviderID' => array('maxlength'=>'50','IsNull'=>'n'),
'ClientID' => array('maxlength'=>'10','IsNull'=>'n'),
'ClientFirstName' => array('maxlength'=>'30','IsNull'=>'n'),
'ClientMiddleInitial' => array('maxlength'=>'1','IsNull'=>'y'),
'ClientLastName' => array('maxlength'=>'30','IsNull'=>'n'),
);
function getSelectedArrayData($setlected_arr)
{
$setlected_arr = '$this->'."$setlected_arr";
print_r($setlected_arr); //it prints a string '$this->client_general'
print_r($this->client_general);//it prints $client_general array data
}
}
$settings = new Settings();
$settings->getSelectedArrayData('client_general');
Моя проблема в том:
Когда я печатаю, print_r($this->client_general);
это печатный $client_general
массив, все в порядке.
Array
(
[PayerID] => Array
(
[maxlength] => 64
[IsNull] => n
)
[ProviderID] => Array
(
[maxlength] => 50
[IsNull] => n
)
[ClientID] => Array
(
[maxlength] => 10
[IsNull] => n
)
[ClientFirstName] => Array
(
[maxlength] => 30
[IsNull] => n
)
[ClientMiddleInitial] => Array
(
[maxlength] => 1
[IsNull] => y
)
[ClientLastName] => Array
(
[maxlength] => 30
[IsNull] => n
)
)
Когда я печатаю print_r($setlected_arr);
, это печатается
$this->client_general
Я думаю, что это также должно указывать на $client_general
массив.
Как я могу это сделать?
Ответ №1:
print_r($this->$setlected_arr);
Ответ №2:
Попробуйте это, это для вас.
class Settings {
private $client_addr = array(
'ClientID' => array('maxlength' => '10', 'IsNull' => 'n'),
'ClientAddressType' => array('maxlength' => '12', 'IsNull' => 'y'),
'ClientAddressLine1' => array('maxlength' => '30', 'IsNull' => 'y'),
'ClientAddressLine2' => array('maxlength' => '30', 'IsNull' => 'y'),
'ClientCounty' => array('maxlength' => '30', 'IsNull' => 'y'),
'ClientCity' => array('maxlength' => '30', 'IsNull' => 'y'),
'ClientState' => array('maxlength' => '2', 'IsNull' => 'y'),
'ClientZip' => array('maxlength' => '9', 'IsNull' => 'y'),
);
private $client_general = array(
'PayerID' => array('maxlength' => '64', 'IsNull' => 'n'),
'ProviderID' => array('maxlength' => '50', 'IsNull' => 'n'),
'ClientID' => array('maxlength' => '10', 'IsNull' => 'n'),
'ClientFirstName' => array('maxlength' => '30', 'IsNull' => 'n'),
'ClientMiddleInitial' => array('maxlength' => '1', 'IsNull' => 'y'),
'ClientLastName' => array('maxlength' => '30', 'IsNull' => 'n'),
);
function getSelectedArrayData($setlected_arr) {
$setlected_arr = ${'this'}->${'setlected_arr'};
print_r($setlected_arr); //it prints a string '$this->client_general'
echo '<br/>';
echo '<br/>';
print_r($this->client_general); //it prints $client_general array data
}
}
$settings = new Settings();
$settings->getSelectedArrayData('client_general');
Пример для вас — создать динамическую переменную по строке — здесь:
${'a' . 'b'} = 'hello there';
echo $ab; // hello there