使用通用字符串$ a并将其展开为点es:
$b = explode(".", $a)
我如何在不知道count($b)
值的情况下以动态方式运行代码:
if (count($b) == 1) {
$c[$b[0]] = $var;
} elseif (count($b) == 2) {
$c[$b[0]][$b[1]] = $var;
} elseif (count($b) == 3) {
$c[$b[0]][$b[1]][$b[2]] = $var;
} ... {
...
} elseif (count($b) == n-1) {
$c[$b[0]][$b[1]][$b[2]]...[$b[n-2]] = $var;
} elseif (count($b) == n) {
$c[$b[0]][$b[1]][$b[2]]...[$b[n-1]] = $var;
} else {
$c = $var;
}
这是一个虚假的代码,可以了解我的意思。
答案 0 :(得分:2)
您有两种解决方案:
第一种是使用递归函数,它将在数组上添加每个新元素。
另一种方法,非常快......但它使用评估功能。我不是这样的忠实粉丝。当你知道所有方面对你的剧本产生影响时使用它。
php convert flat family list to tree
import java.util.*;
public class example
{
public static void main(String[]args)
{
int i = 1;
int a = 4;
while( i < 4 )
{
i++;
a--;
sleep(1000);
System.out.println("\t\t\t\t The Game Begins In...");
System.out.print("\t\t\t\t " + a);
}
}
}
答案 1 :(得分:2)
解决方案不带 eval()
和递归:
function split_to_multi($string, $value)
{
$levels = explode('.', $string);
$result = [];
foreach (array_reverse($levels) as $key) {
$result = [$key => $value];
$value = $result;
}
return $result;
}
例如:
print_r(split_to_multi('foo.bar.baz', 123));
将输出:
Array
(
[foo] => Array
(
[bar] => Array
(
[baz] => 123
)
)
)