[英]Convert a string to a multidimensional array
如何將字符串 test[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]
,您可能會收到錯誤111onetest[1][2][3][4][5]
,因為 PHP 中的變量名不能以數字開頭。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.