Как проверить, существует ли значение и вывести его в том же порядке, что и в массиве? - PullRequest
0 голосов
/ 17 мая 2018

Я пытаюсь составить сортируемый список с помощью 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>

Как мне сделать это правильно?

Ответы [ 3 ]

0 голосов
/ 17 мая 2018

Вы можете использовать функцию array_intersect () из PHP. Для этого вам нужно будет создать массив ваших писем, а затем сравнить результаты $ с этим новым массивом. Вот пример:

<?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>";
}
0 голосов
/ 17 мая 2018

Проверьте код ниже, изменили ваш код, и он дает результат.

<?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>';
} 
?>
0 голосов
/ 17 мая 2018

Просто выполните цикл по $results:

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

Это выведет ваши HTML-узлы в правильном порядке.

...