首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >多维数组

多维数组
EN

Stack Overflow用户
提问于 2010-01-31 18:26:45
回答 4查看 177关注 0票数 0

我想创建一个基于字符串的多维数组。

该字符串的值为$string="1/2/3"

我想给$array[1][2][3]=somethimg分配

实际上,数组的索引是在$string中描述的

$string具有不同的深度。

例如,可以是$string="1/2或$string="1/2/3/4/5或$string="1/2/3/5/7/8/9/9/6,因此多维数组中的键数不是标准的

任何想法。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2010-01-31 19:13:28

尝试使用

代码语言:javascript
复制
<?php
$ind = '1/2/3/4/5/6/7/8/9/10/11/12';

$ind = '[' . join('][', explode('/',$ind)) . ']';
$fn = create_function('$var, $val','global ${$var}; ${$var}'. $ind. '= $val;');
$array = array();
$fn("array", "something");
echo '<pre>'.print_r($array, true).'</pre>';
?>

更简单的版本

代码语言:javascript
复制
<?php
$ind = '1/2/3/4/5/6/7/8/9/10/11/12';
$ind = '[' . join('][', explode('/',$ind)) . ']';
$array = array();
$val = "something";
eval('$array'.$ind.'=$val;');
echo '<pre>'.print_r($array, true).'</pre>';
?>

有些人可能会因为eval函数而杀了我,但它在这种情况下工作得很好:-P

票数 1
EN

Stack Overflow用户

发布于 2010-01-31 18:30:05

代码语言:javascript
复制
$string = '1/2/3';
list($x, $y, $z) = explode('/', $string);

$array[$x][$y][$z] = 'something';
票数 2
EN

Stack Overflow用户

发布于 2010-01-31 18:30:36

假设您的字符串格式为:

代码语言:javascript
复制
list($lev1, $lev2, $lev3) = explode('/', $string);
$array[$lev1][$lev2][$lev3] = $something;

在编辑之后--您可以使用如下的递归函数:

代码语言:javascript
复制
$string = '1/2/3/4/5/6/7/8';
$value  = 'something';

print_r(build_array($string, $value));

function build_array($string, $value, $array = array()) {
    list($key, $rest) = explode('/', $string, 2);
    if ( $key ) {
        $array = array(
            $key => build_array($rest, $value, $array[$key])
        );
        return $array;
    } else {
        return $value;
    }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2171318

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档