簡體   English   中英

將字符串轉換為多維數組

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM