я хочу обнаружить одно и то же значение в массиве, объединить и вернуть результат с другим классом, в этом примере есть два раза буква «а», поэтому мне нужно вернуть в качестве окончательного результата только одну букву «а», но она должна быть с другим классом.
Так что в основном, если есть несколько одинаковых букв, мне нужно объединить их в один и добавить другой класс.
$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>
Если есть один и тот же класс значений, например, должно быть «два».
где two в вашем коде?
Мне нужно найти способ добавить другой класс, который на самом деле является проблемой






Вот один из способов сделать это: подсчитать значения, а затем перед циклом удалить дубликаты.
<?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]].'"
в одну сторону.....
<?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>
Я немного смущен относительно того, каков предполагаемый результат. Вы хотите увеличивать
oneв своем классе<span>каждый раз, когда цикл повторяется... и обнаруживаетсяa?? Не могли бы вы добавить ожидаемый результат, возможно?