我创建了一个函数,它根据另外两个数组的值和键返回一个嵌套数组,并将第三个值分配给最深的键(希望它对代码有意义):
function myfunc_build_array($mydata,$keys,$value)
{
$newarr=array();
foreach ($mydata as $data)
{
$evalvar='$newarr';
foreach ($keys as $key)
{
$evalvar.="['".$data[$key]."']";
}
$evalvar.='=$value;';
eval($evalvar);
}
return $newarr;
}
所以,即如果我们有:
$mydata=array(
0=>array('section'=>'NS1','subsection'=>'NS1A','employee'=>'2812','name'=>'Bob'),
1=>array('section'=>'NS1','subsection'=>'NS1A','employee'=>'2811','name'=>'Bib'),
2=>array('section'=>'NS1','subsection'=>'NS1B','employee'=>'2718','name'=>'Bub'),
);
$keys= array('section','subsection','employee');
myfunc_build_array($mydata,$keys,"active"); 的结果 是:
array(1) {
["NS1"]=>
array(2) {
["NS1A"]=>
array(2) {
[2812]=>
string(6) "active"
[2811]=>
string(6) "active"
}
["NS1B"]=>
array(1) {
[2718]=>
string(6) "active"
}
}
}
它工作正常,但由于我通常避免使用 eval(),我想知道是否有更好的方法,更优雅或更快。