приведение типов php и ссылка на массив

#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
  

Мой скомпилированный результат:
введите описание изображения здесь