如何检查值是否存在并以与数组中相同的顺序打印?

How to check if value exists and print it in the same order as in array?

我正在尝试使用 jQuery UI 制作一个可排序的列表。在后端,一切似乎都运行良好。数组发送正确,但我在前端显示正确的列表顺序时遇到一些问题。


这是我的数组的样子。 print_r($results):

Array
(
   [0] => Array
         (
            [0] => "B"
            [1] => "A"
            [3] => "E"
         )
)

我正在检查数组中是否存在特定值:

<?php 
$letters = $myarray;
preg_match_all('/".*?"/', $letters, $results);
    if(in_array("A", $results, true)) { ?> 
      <span><i class="icon"></i>Letter A exists</span>
<?php  } 
    if(in_array("B", $results, true)) { ?> 
      <span><i class="icon"></i>Letter B exists</span>
<?php  }  
    if(in_array("C", $results, true)) { ?> 
      <span><i class="icon"></i>Letter C exists</span>
<?php  }  
    if(in_array("D", $results, true)) { ?> 
      <span><i class="icon"></i>Letter D exists</span>
<?php  }  
    if(in_array("E", $results, true)) { ?> 
      <span><i class="icon"></i>Letter E exists</span>
<?php  } ?>   
...

之后我想以与数组中相同的顺序显示结果:

<span><i class="icon"></i>Letter B exists</span>
<span><i class="icon"></i>Letter A exists</span>
<span><i class="icon"></i>Letter E exists</span>

我怎样才能以正确的方式做到这一点?

只需循环 $results:

foreach ($results[0] as $letter){
    printf('<span><i class="icon"></i>Letter %s exists</span>', $letter);
}

这将以正确的顺序输出您的 html 个节点。

您可能想使用 PHP 中的 array_intersect() 函数。为此,您必须制作一个字母数组,然后根据该新数组检查 $results。这是一个例子:

<?php 
$results = [['B', 'A', 'E']];
$matches = array_intersect($results[0], ['A','B','C','D','E']);
foreach($matches as $match){
    echo "<span><i class='icon'></i>Letter $match exists</span><br>";
}

检查下面的代码,修改您的代码并给出结果。

<?php
$myarray = array("0" => array("0" => "B","1" => "A","3" => "E"));
print_r($myarray[0]);

$letters = $myarray[0];

if(in_array("A", $letters, true)) { 
    echo '<span><i class="icon"></i>Letter A exists</span>';
} 
?>