根据可能性显示文本

display text depending on possibilities

我有 6 个值。哪些用户可以 select 使用这些值中的任何一个。在这 6 个值中,3 个有计划,3 个没有计划。根据用户 selected 值,我必须显示如下链接:

  1. withplan link1
  2. withplan link2
  3. withplan link3

  1. withoutplan link4
  2. withoutplan link5
  3. withoutplan link6

我制作了三个数组: $userSelected , $targetWith , $targetWithout

 $targetWith = array('val1', 'val2', 'val3'); 

    $targetWithout = array('val4', 'val5', 'val6'); 

用户 selection 有 3 种可能性。

可能性1:用户可以select一个有,一个没有($userSelected = array('val1','val4');),这样时间OR就会显示。

可能性 2: 如果用户 select 仅具有计划 ($userSelected = array('val1','val2');),则不应显示 OR。

可能性 3: 如果用户 select 没有计划($userSelected = array('val5','val6');),则不应显示 OR。

为了显示或我使用了 array_intersect,但没有按预期工作。如果用户 select 仅具有计划,则显示 OR。

  if( (count(array_intersect($userSelected , $targetWith)) != count($targetWith)) || (count(array_intersect($userSelected , $targetWithout)) != count($targetWithout))){
    // all of $target not is in $userSelected 
  
       echo   '<p><strong>-Or-</strong></p>';
}

我也试过了

if((count(array_intersect($userSelected , $targetWith)) > 0) || (count(array_intersect($userSelected , $targetWithout)) > 0)){
     // at least one of $target is in $userSelected 
 
        echo  '<p><strong>-Or-</strong></p>';
}

使用以上两个代码,OR 将显示 2,3 种可能性。应该显示。

我没有弄错。该代码应该如何?如果有任何其他方法可以实现这种可能性,请提出建议。请帮助和指导。提前致谢。

假设您想确定用户的选择是否存在于两个数组中,您可以简单地使用 array_intersect 两次来检查。

<?php

// Ex. http://sandbox.onlinephpfunctions.com/code/248e7414d6a3fdbb2555ac206455a7fa2e894561

$with = ['val1', 'val2', 'val3'];
$without = ['val4', 'val5', 'val6'];

$userSelections = ['val1', 'val6'];

$inBoth = 
    !empty(array_intersect($userSelections, $with)) && 
    !empty(array_intersect($userSelections, $without));

if ($inBoth) {
    echo '<p><strong>-Or-</strong></p>';
}