php - 为 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;
}
这是正确的还是我搞砸了?
解决方案
您错过了“使用”部分,因此函数体不知道 $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;
}
推荐阅读
- c# - 如何克服 SagePay 支付处理错误
- python - 如何使用reportlab向表格的某行添加列?
- c++ - if-else 树优化
- android - 适用于 Android 和 iOS 应用程序的静音打印功能
- json - 我正在尝试在不使用 jq 的情况下根据 bash 脚本中 json 的另一个键来检索键的值
- java - 如何仅列出指定目录中的文件夹?
- c# - C# Graphics DrawImage 函数重新缩放从原始位图中提取的位图
- asp.net-core - 通过命名参数解析路由
- php - 无法使用 AJAX 删除 php 中的行
- android - Recyclerview 移至屏幕外可见性