我是PHP的新手,我正在尝试将简单的Javascript函数转换为PHP函数.到目前为止,我知道只转换变量,我需要帮助sort函数和数组过滤器.谢谢你的帮助!
var closeRoll = function( number ) {
var rollArray = [36, 48, 60, 72];
var closest = rollArray.filter(function(ele){
return ele - number >= 0
}).sort()[0];
return closest;
};
Run Code Online (Sandbox Code Playgroud)
我的半转换:
function closeRoll( $number ) {
$rollArray = Array(36, 48, 60, 72);
$closest = array_filter( $rollArray, function temp( $rollArray ) {
return $rollArray - $number >= 0;
}); //.sort()[0];
return $closest;
};
Run Code Online (Sandbox Code Playgroud)
作用域的工作方式与 JavaScript 不太一样;您不能简单地在$number回调函数内部引用,因为它没有作用域链。
您要么必须将其设为全局(不推荐但简单):
<?php
function doFilter($element) { // this could still be anonymous, but doesn't have to be
return $element - $GLOBALS['number'] >= 0;
}
function closeRoll( $number ) {
$GLOBALS['number'] = $number;
$rollArray = Array(36, 48, 60, 72);
$closest = array_filter( $rollArray, 'doFilter' );
return $closest;
};
?>
Run Code Online (Sandbox Code Playgroud)
或者您可以使用use运算符(一个优雅的解决方案):
<?php
function closeRoll( $number ) {
$rollArray = Array(36, 48, 60, 72);
$closest = array_filter( $rollArray, function( $element ) use ($number) {
return $element - $number >= 0;
});
return $closest;
};
?>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1318 次 |
| 最近记录: |