0

我需要编写一个返回多维数组的方法。数组深度的数量由方法被调用的次数决定。

class Maker
{
    public $array = [];
    function set($key, $value = [])
    {
        //make the array
    }
}

$maker = new Maker();
$maker->set('a');
$maker->set('b');
$maker->set('c', 100);

print_r($maker->array);

结果是:数组('a' => 'b' => 'c' => 100 )

4

3 回答 3

0

我相信这就是您正在寻找的:

class Maker
{
    private $arrayContainer = []; // Make public if you want to access it `$maker->arrayContainer`
    function set(string $key, $value = [])
    {
        $this->arrayContainer[$key] = $value;
    }
    function get(string $key,$default=null){
        return isset($this->arrayContainer[$key])?$this->arrayContainer[$key]:$default;
    }
    function all(){
        return $this->arrayContainer;
    }
}
$maker = new Maker();
$maker->set('a');
$maker->set('b', [1,2,3,4,5]);
$maker->set('c', ['a'=>1,'b'=>2,'c'=>3]);

//Get a specific index from the Maker class
print_r($maker->get('b'));

//Get the arrayContainer from the Maker Class
print_r($maker->all());

希望这可以帮助,

于 2019-03-28T03:05:51.887 回答
0

我觉得这个更合适

 class Maker
{
    public $array = [];
    function set($key, $value = [])
    {
        $this->array[$key] = $value;
    }
}

$maker = new Maker();
$maker->set('a', array( 'VAL1', 1 ));
$maker->set('b', array( 'VAL1', array ( 'VAL2', 2 ) ));
$maker->set('c' , array( 'VAL1', array ( 'VAL2', array ( 'VAL3', 3 )  ) ));

var_dump($maker->array);
于 2019-03-28T03:14:27.933 回答
0

我会用递归去

class Maker
{
  public $array = [];

  function set($key, $value = []) {
    $this->_set($this->array, $key, $value);
  }

  private function _set(&$array, $key, $value) {
    if (is_array($array)) {
      if (empty($array))
        $array[$key] = $value;
      else {
        foreach ($array as $k => $v) {
          $this->_set($array[$k], $key, $value);
          break;
        }
      }
    }
  }
}

输出:

Array
(
    [a] => Array
        (
            [b] => Array
                (
                    [c] => 100
                )

        )

)
于 2019-03-28T04:00:31.213 回答