приведение типа php и ссылка на массив - PullRequest
2 голосов
/ 28 марта 2019

Я столкнулся с проблемой в коде 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.

Как я могу это сделать?

Ответы [ 2 ]

3 голосов
/ 28 марта 2019
print_r($this->$setlected_arr);
2 голосов
/ 28 марта 2019

Попробуйте, это для вас.

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

Мой скомпилированный вывод: enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...