我有这个数组
$array = [1, 2, 3, 4, 5];
和此功能
function change($array) {
foreach ($array as $key => $value) {
$form[$key+5][$value-1] = $key-$value;
}
return $form;
}
change($array);
在其中我要重新排列数组的形式是$form[$key+5][$value-1] = $key-$value;
,但我想通过这样的参数来定义它
function change($array, $form) {
foreach ($array as $key => $value) {
$form;
}
return $form;
}
$x = change($array, $arr[$key+5][$value-1] = $key-$value);
$y = change($array, $arr[$key+5][$key+100] = $key+$value);
这怎么办?
答案 0 :(得分:1)
有人会抨击eval
的所有弊端,但是如果它不是用户提供的(不受信任的)数据,那么这行得通:
function change($array, $form) {
foreach ($array as $key => $value) {
eval("\$result$form;");
}
return $result;
}
您需要使用如下所示的字符串来调用它:
$x = change($array, '[$key+5][$value-1] = $key-$value');
$y = change($array, '[$key+5][$key+100] = $key+$value');
这将构建一个类似于以下内容的字符串:$result[$key+5][$key+100] = $key+$value;
并将其评估为PHP代码。
需要做很多工作,但是您可以传递一些内容以进行解析并将其调整为How to access and manipulate multi-dimensional array by key names / path?。