Найдите то же значение в foreach и присоединитесь к PHP

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

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

$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>

Я немного смущен относительно того, каков предполагаемый результат. Вы хотите увеличивать one в своем классе <span> каждый раз, когда цикл повторяется... и обнаруживается a?? Не могли бы вы добавить ожидаемый результат, возможно?

Obsidian Age 04.03.2019 03:24

Если есть один и тот же класс значений, например, должно быть «два».

Doom95 04.03.2019 03:26

где two в вашем коде?

Lawrence Cherone 04.03.2019 03:27

Мне нужно найти способ добавить другой класс, который на самом деле является проблемой

Doom95 04.03.2019 03:29
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
4
229
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Ответ принят как подходящий

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

<?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>

np, хотя для 3 значений он будет использовать класс two, для большего количества у вас будет массив классов $class = ['none','one','two','three',...], а затем выберите как class = "'.$class[$stat[$value]].'"

Lawrence Cherone 04.03.2019 03:55

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

<?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 );

?>

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

<?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>

Другие вопросы по теме