Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/wordpress/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 查找数组中最近的值_Php_Wordpress_Sorting - Fatal编程技术网

Php 查找数组中最近的值

Php 查找数组中最近的值,php,wordpress,sorting,Php,Wordpress,Sorting,希望有人能提供帮助,我目前正在为一个竞赛做一个构建-目标是让用户猜测逃逸专家执行一个动作所需的时间,因此您将有以下场景: 第一幕-逃生专家在2分钟30秒内完成 假设你有5个猜测: 名称1:1分钟20 姓名2:2min20 姓名3:5分钟50 姓名4:6分钟10 姓名5:3分钟40 当逃逸专家完成后,他们希望能够显示前4名的结果,因此在本例中: 姓名2:2min20 名称1:1分钟20 姓名5:3分钟40 姓名3:4分钟50 我现在正在使用WordPress,所以我的问题是 $args = arr

希望有人能提供帮助,我目前正在为一个竞赛做一个构建-目标是让用户猜测逃逸专家执行一个动作所需的时间,因此您将有以下场景:

第一幕-逃生专家在2分钟30秒内完成

假设你有5个猜测:

名称1:1分钟20

姓名2:2min20

姓名3:5分钟50

姓名4:6分钟10

姓名5:3分钟40

当逃逸专家完成后,他们希望能够显示前4名的结果,因此在本例中:

姓名2:2min20

名称1:1分钟20

姓名5:3分钟40

姓名3:4分钟50

我现在正在使用WordPress,所以我的问题是

$args = array(
'post_type' => 'entry', 
'posts_per_page' => 4, 
'order'     => 'ASC',
'orderby'   => 'meta_value_num',
'meta_key'  => 'in_seconds', 

'meta_query' => array(
    'relation' => 'AND',
    array(
        'key'     => 'act',
        'value'   => $post->ID,
        'compare' => '=',
    ),
    array(
        'key'     => 'in_seconds',
        'value'   => $seconds,
        'type'    => 'numeric',
        'compare' => '>=',
    ),
),
);
这会得到最接近的值,但前提是它们更高,而不是更低。 显然,我更喜欢使用wp_查询来实现这一点,但如果有人知道实现这一点的方法(即使是一个沉重的多重循环),我将永远感激

作为参考,所有猜测都会在几秒钟内存储在数据库中

希望你能帮忙! 谢谢
安迪:)

恐怕仅仅用一个简单的WP\u查询是不可能实现你想要的。尽管您应该能够按照posts秒数与所需秒数之差的绝对值对posts进行排序。您的代码将类似于:

$args = array(
    'posts_per_page' => 4, 
    'order'     => 'ASC',
    'orderby'   => 'meta_value_num',
    'meta_key'  => 'in_seconds', 
    'meta_query' => array(
        'relation' => 'AND',
        array(
            'key'     => 'act',
            'value'   => $post->ID,
            'compare' => '=',
        ),
    ),
);
发布orderby筛选器以更改订单行为:

global $seconds_where;
$seconds_where = $seconds;
function seconds_posts_orderby( $orderby ) {
    $orderby = " ABS($seconds - meta_value) ASC";
    return $orderby;
}
add_filter('posts_orderby', 'seconds_posts_orderby');
$my_query = new WP_Query($args);
remove_filter('posts_orderby', 'seconds_posts_orderby');

这只是一个开始,但我希望这能有所帮助。

不客气,@imandypugh!你能接受这样的答案吗我想是因为我是一个新用户,所以DIt不允许我使用Felipe?只要它允许我,我就接受它!非常感谢。