从函数返回特定的数组形式

时间:2019-07-18 20:09:14

标签: php arrays

我有这个数组

$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);

这怎么办?

1 个答案:

答案 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?