Php 查找数组中最近的值
希望有人能提供帮助,我目前正在为一个竞赛做一个构建-目标是让用户猜测逃逸专家执行一个动作所需的时间,因此您将有以下场景: 第一幕-逃生专家在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,所以我的问题是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
$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?只要它允许我,我就接受它!非常感谢。