首页 > 解决方案 > 为 php 7.2 重构 create_function

问题描述

我需要重构一段 php 代码以使用 7.2,但我不确定我这样做的方式是否正确。我可以使用一些关于它的信息。这是旧代码

    private function sortByFields($field, &$array)
    {
        usort($array, create_function('$a, $b', '
            $a = $a["' . $field . '"];
            $b = $b["' . $field . '"];

            if ($a == $b) return 0;

            return ($a < $b) ? -1 : 1;
        '));

        return true;
    }

这是我为 7.2 重构的代码

    private function sortByFields($field, &$array)
    {
        usort($array, function ($a,$b) {
            $a = $a["' . $field . '"];
            $b = $b["' . $field . '"];

            if ($a == $b) return 0;

            return ($a < $b) ? -1 : 1;
        });

        return true;
    }

这是正确的还是我搞砸了?

标签: php

解决方案


您错过了“使用”部分,因此函数体不知道 $field 并弄乱了 $field 数组键 - 见下文:

private function sortByFields($field, &$array)
{
    usort($array, function ($a,$b) use ($field) {
        $a = $a[$field];
        $b = $b[$field];

        if ($a == $b) return 0;

        return ($a < $b) ? -1 : 1;
    });

    return true;
}

推荐阅读