我想创建一个基于字符串的多维数组。
该字符串的值为$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,因此多维数组中的键数不是标准的
任何想法。
发布于 2010-01-31 19:13:28
尝试使用
<?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>';
?>更简单的版本
<?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
发布于 2010-01-31 18:30:05
$string = '1/2/3';
list($x, $y, $z) = explode('/', $string);
$array[$x][$y][$z] = 'something';发布于 2010-01-31 18:30:36
假设您的字符串格式为:
list($lev1, $lev2, $lev3) = explode('/', $string);
$array[$lev1][$lev2][$lev3] = $something;在编辑之后--您可以使用如下的递归函数:
$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;
}
}https://stackoverflow.com/questions/2171318
复制相似问题