Найти то же значение в foreach и присоединиться к PHP - PullRequest
0 голосов
/ 04 марта 2019

Я хочу обнаружить одно и то же значение в массиве, объединить и вернуть результат с другим классом, в этом примере дважды встречается буква «а», поэтому мне нужно вернуть в качестве конечного результата только одну временную букву «а», но она должна быть сдругой класс.

Таким образом, в принципе, если существует более одной и той же буквы, мне нужно объединить ее в один и добавить другой класс.

$array = 'a,b,v,g,h,y,a';   
function buildTag2s($var) {
    $tags = explode(',',$var);
    foreach($tags as $i) {
        $string .= '<span class="one">'.$i.'</span>';
    }
    return $string;
} 
echo buildTag2s($array)

Я пытаюсь добавить внутрь foreach array_key_exists, но нене работает.

Вывод должен быть

<span class="two">a</span>
<span class="one">b</span>
<span class="one">v</span>
<span class="one">g</span>
<span class="one">h</span>
<span class="one">y</span>

Ответы [ 3 ]

0 голосов
/ 04 марта 2019

в одну сторону .....

<?php

$array = 'a,b,v,g,h,h,h,h,y,y,y,a';


function buildTag2s ( $var )
{
    $item = array ( '', 'one', 'two', 'three', 'four', 'five', 'six', 'seven', 'eight' );

    $keep = array ( );

    $send = '';

    $tags = explode ( ',', $var );

    foreach ( $tags as $i )
    {
        if ( ! isset ( $keep[$i] ) )
        {
            $keep[$i] = count ( array_keys ( $tags, $i ) );

            $send .= '<span class="' . $item[$keep[$i]] . '">'.$i.'</span>';
        }
    }

    return $send;
}

echo buildTag2s ( $array );

?>
0 голосов
/ 04 марта 2019

надеюсь, что это даст вам решение.

<?php

$array = 'a,b,v,g,h,y,a';   
function buildTag2s($var) {
    $string = NULL;
    $tags = explode(',',$var);
    $stat = array_count_values($tags);
    foreach(array_unique($tags) as $i) {
        $string .= '<span class="'.($stat[$i] > 1 ? 'two' : 
        'one').'">'.$i.'</span>'.PHP_EOL;
    }
   return $string;
  } 
 echo buildTag2s($array)
?>

результат:

<span class="two">a</span>
<span class="one">b</span>
<span class="one">v</span>
<span class="one">g</span>
<span class="one">h</span>
<span class="one">y</span>
0 голосов
/ 04 марта 2019

Вот один из способов сделать это: подсчитать значения, а затем перед циклом удалить дубликаты.

<?php
$array = explode(',', 'a,b,v,g,h,y,a'); 

$stat = array_count_values($array);
foreach (array_unique($array) as $value) {
    echo '<span class="'.($stat[$value] > 1 ? 'two' : 'one').'">'.$value.'</span>'.PHP_EOL;
}

Результат

<span class="two">a</span>
<span class="one">b</span>
<span class="one">v</span>
<span class="one">g</span>
<span class="one">h</span>
<span class="one">y</span>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...