Php 将字符串转换为多维数组
如何将字符串测试[1][2][3][4][5]转换为多维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()表示法,即[
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
与结果有什么关系?这有关系吗?另外,请分享您的尝试。您的意思是问如何创建一个多维数组,在特定的索引组合中只有一个空数组?