就像我在评论中指出的那样,你可以通过与球员的帖子ID进行比较,找出“球员”是“进球者”还是“黄牌/红牌持有者”。
因此,假设与以下内容“匹配”:
9个“玩家”(ACF字段:pl1
到pl9
)
3名“进球者”(ACF字段:s1
到s3
)
1“卡”(ACF字段:y1
)
现在,要将单个“球员”与单个“进球者”或“持卡人”进行比较,可以这样做:
$pl1 = get_field( \'pl1\' ); // PL1; player
$s1 = get_field( \'s1\' ); // S1; goal scorer
$y1 = get_field( \'y1\' ); // Y1; card holder
// Check if S1 == PL1
if ( $pl1 && $s1 && $s1->ID == $pl1->ID ) {
echo \'S1 equals PL1<br>\';
}
// Check if Y1 == PL1
if ( $pl1 && $y1 && $y1->ID == $pl1->ID ) {
echo \'Y1 equals PL1<br>\';
}
但要将单个“球员”与所有可用的“进球者”和/或“持卡人”进行比较,您可以使用
get_fields()
功能如下:
$pl1 = get_field( \'pl1\' ); // PL1; player
$fields = get_fields( false, false );
$total_goals = 0;
$total_cards = 0;
$pl1_cards = 0;
$pl1_goals = 0;
foreach ( $fields as $key => $post_id ) {
// Check if the field name is \'s{n}\' where {n} is a number. If yes,
// then it\'s a \'goal scorer\' field. (based on your naming style)
if ( preg_match( \'/^s(\\d+)$/\', $key ) ) {
// Check if PL1 == S{n}
if ( $pl1 && $post_id == $pl1->ID ) {
echo strtoupper( $key ) . \' equals PL1<br>\';
$pl1_goals++;
}
$total_goals += $post_id >= 1 ? 1 : 0;
}
// Check if the field name is \'y{n}\' where {n} is a number. If yes,
// then it\'s a \'card holder\' field. (based on your naming style)
if ( preg_match( \'/^y(\\d+)$/\', $key ) ) {
// Check if PL1 == Y{n}
if ( $pl1 && $post_id == $pl1->ID ) {
echo strtoupper( $key ) . \' equals PL1<br>\';
$pl1_cards++;
}
$total_cards += $post_id >= 1 ? 1 : 0;
}
}
echo \'<p>\' .
\'This match had \' . $total_goals . \' goals and \' . $total_cards . \' cards.<br>\' .
\'Player "PL1" had \' . $pl1_goals . \' goals and \' . $pl1_cards . \' cards.<br>\' .
\'</p>\';
在
$fields = get_fields( false, false );
, 如果将第二个参数设置为
true
(这是默认值),然后重命名
$post_id
到
$post_obj
, 和使用
$post_obj->ID == $pl1->ID
和
$post_obj->ID >= 1
.
此外,这些变量用于演示目的:$total_goals
, $pl1_goals
, $total_cards
, 和$pl1_cards
. 因此,您可以忽略/删除它们。但是,如果$total_goals
等于$pl1_goals
, 那么你可以说所有的进球都是由PL1完成的。
希望这个答案对您有所帮助,如果您需要进一步的帮助,或者如果我误解了什么,请告诉我。=)