ACF-比较用户和POST数据

时间:2016-10-26 作者:Game Unity

我试图将来自用户的高级自定义字段数据与某些post数据进行比较。基本上,我有一个用户“radio”字段(带有一个值),用户可以在其中选择操作系统(如Windows、Linux…)。根据类型,他们还可以选择特定的操作系统版本(如其他字段上的Windows 10)。我还有一个post字段,在这里我可以选择多个OS版本(在我的情况下,游戏支持这些版本)。例如,字段及其保存的值:

用户操作系统类型:“windows”用户操作系统版本:“10”Post multi-select操作系统:“array(\'windows-7\',\'mac-OS-10.07\',\'linux-Ubto-16.04”)”

    因此,现在要检查用户操作系统是否支持Post操作系统-首先,我要检查用户是否安装了正确的操作系统。使用此代码可以执行以下操作:

    $field_os = array(\'windows-7\',\'mac-os-10.07\',\'linux-ubunto-16.04\');
    $user_os_type = "windows";
    
    if (strpos($field_os, $user_os_type) !== false) {
    echo "It turns true because it found the word \'windows\' in the array";
    }
    
    但在第二步中,我还必须检查用户是否使用了正确的操作系统版本。这有点棘手,因为:在本例中,所需的os版本是at least “windows-7”,所以我可以使用操作系统版本:“10”。但是你看,我必须从数组中筛选出正确的操作系统类型,然后从数组中删除前缀“windows”。这样我就可以比较这样的数字:

    $value = \'10\'; if($value >=7) {
    echo "You have the right windows version";
    }
    
    编辑:

    问题是,如何找到这个字符串$user_os_type = "windows" 在ACF multi-select字段中,并将类似的匹配项(在本例中应为“windows-7”)存储在变量中。

    编辑:

    我现在使用这段代码是因为另一段代码没有进行应有的搜索。只有当“windows-7”放在首位时,它才起作用。

    $input      = $user_os_type;            // search for this string
    $words      = $os_array[\'value\'];   // word array as source of comparison
    
    $shortest   = -1;
    
    foreach ($words as $word) { $lev = levenshtein($input, $word);
    if ($lev == 0) { $match = $word; $shortest = 0; break; }
    if ($lev <= $shortest || $shortest < 0) {
    
    $match_os  = $word; $match_os = preg_replace(\'/[^0-9\\.]/\',\'\',$match_os);
    $shortest   = $lev; 
    } }
    

1 个回复
最合适的回答,由SO网友:Sebastian Kaczmarek 整理而成

有一个PHP函数:preg_grep 其中接受$pattern$input 并返回一个匹配数组。如果要获得第一个匹配项,只需将其分配给变量,例如:

$field_os = array(\'windows-7\',\'mac-os-10.07\',\'linux-ubunto-16.04\');
$user_os_type = "windows";

$matches = preg_grep("/" . $user_os_type . "/", $field_os);

var_dump($matches);
/*
 Prints:

 array(1) {
  [0]=>
  string(9) "windows-7"
 }

*/

$first_match = $matches[0];

echo $first_match; // Prints: windows-7
有关更多信息,请访问此链接:http://php.net/manual/en/function.preg-grep.php

相关推荐

如何让`wp-list-table`显示我在Custom-Post中的`Custom-Fields`

一切都好吗<我需要wp-list-table 也要显示custom-fields 在每个custom-post 我有,但我不知道如何做到这一点,在这幅图中,它显示了带有字段的表格:Title, Author and Publication Date: 我想要的是能够选择custom-fields 将出现,例如以下示例Title, Carta, Naipe, Author, and Date of Publication: