Php 将字符串转换为多维数组

Php 将字符串转换为多维数组,php,arrays,string,Php,Arrays,String,如何将字符串测试[1][2][3][4][5]转换为多维PHP数组,如: array(1 => array(2 => array( 3 => array( 4 => array(5 => array())))); 如果我正确理解了您的问题,您要求将字符串“test[1][2][3][4][5]”转换为array(1=>array(2=>array)(3=>array(4=>array(5=>array())); 首先,人们通常使用简短的array()表示法,即[

如何将字符串测试[1][2][3][4][5]转换为多维PHP数组,如:

array(1 => array(2 => array( 3 => array( 4 => array(5 => array())))); 

如果我正确理解了您的问题,您要求将字符串
“test[1][2][3][4][5]”转换为
array(1=>array(2=>array)(3=>array(4=>array(5=>array()));

首先,人们通常使用简短的
array()
表示法,即
[]

第二,既然可以直接输入,为什么还要使用字符串呢

$test[1][2][3][4][5] = [];
得到你想要的


如果您确实需要字符串,可以通过多种方式实现,其中之一是:

function makeArrayFromString($string, &$name)
{
    $namePosEnd = strpos($string, '['); // name ends when first [ starts
    if (!$namePosEnd) return false; // didn't find [ or doesn't start with name

    $name = substr($string, 0, $namePosEnd);

    $dimensionKeys = [];
    $result = preg_match_all('/\[([0-9]+)\]/', $string, $dimensionKeys); // get keys
    if (!$result) return false; // no matches for dimension keys

    $dimensionKeys = array_reverse($dimensionKeys[1]);
    $multiArray = [];

    foreach ($dimensionKeys as $key)
    {
        $key = (int)$key; // we have string keys, turn them to integers
        $temp = [];
        $temp[$key] = $multiArray;
        $multiArray = $temp;
    }

    return $multiArray;
}

$string = 'test[1][2][3][4][5]';
$name = '';
$multiArray = makeArrayFromString($string, $name);

if ($multiArray === false)
    exit('Error creating the multidimensional array from string.');

$$name = $multiArray; // assign the array to the variable name stored in $name
var_dump($test); // let's check if it worked!
产出:

array(1) {
  [1]=>
  array(1) {
    [2]=>
    array(1) {
      [3]=>
      array(1) {
        [4]=>
        array(1) {
          [5]=>
          array(0) {
          }
        }
      }
    }
  }
}

请记住,如果$name字符串满足PHP变量命名规则,我没有添加任何检查。因此,如果执行类似
111onetest[1][2][3][4][5]的操作,可能会出现错误
,因为PHP中的变量名不能以数字开头。

test
与结果有什么关系?这有关系吗?另外,请分享您的尝试。您的意思是问如何创建一个多维数组,在特定的索引组合中只有一个空数组?