Я искал везде, но не могу найти решение, которое работает для меня.
У меня есть следующее:
$bedroom_array = array($studio, $one_bed, $two_bed, $three_bed, $four_bed);
В этом примере можно сказать:
$studio = '1'; $one_bed = '3'; $two_bed = '3';
Затем я использую функцию implode для запятой между всеми значениями:
$bedroom_list = implode(", ", array_filter($bedroom_array)); echo $bedroom_list;
Затем это выдает:
1, 2, 3
То, что я хочу сделать, это найти последнюю запятую в строке и заменить ее на &, поэтому она будет читать:
1, 2 и 3
Строка не всегда будет такой длинной, она может быть короче или длиннее, например, 1, 2, 3, 4 и т. Д. Я изучил использование substr, но не уверен, что это будет работать для того, что мне нужно?
Выключить последний элемент, взорвать остальные вместе, а затем снова вставить последний.
$bedroom_array = array('studio', 'one_bed', 'two_bed', 'three_bed', 'four_bed'); $last = array_pop($bedroom_array); $string = count($bedroom_array) ? implode(", ", $bedroom_array) . " & " . $last : $last;
Преобразование &
сущности &
если необходимо.
если вы разделили запятыми список слов, которые вы можете использовать:
$keyword = "hello, sadasd, sdfgdsfg,sadfsdafsfd, ssdf, sdgdfg";
$keyword = preg_replace('/,([^,]*)$/', ' & \1', $keyword);
echo $keyword;
он будет выводить: hello, sadasd, sdfgdsfg, sadfsdafsfd, ssdf & sdgdfg
Альтернатива с одним слоем, которая будет работать для любого размера массива ($ b = $ bedroom_array):
echo count($b) <= 1 ? reset($b) : join(', ', array_slice($b, 0, -1)) . " & " . end($b);
function fancy_implode($arr){ array_push($arr, implode(' and ', array_splice($arr, -2))); return implode(', ', $arr); }
Мне это легче читать / понимать и использовать
array('Shirts (S, M, L)', 'Pants (72 x 37, 72 x 39)');
$bedroom_list = implode(", ", array_filter($bedroom_array)); $vars = $bedroom_list; $last = strrchr($vars,","); $last_ = str_replace(",","&",$last); echo str_replace("$last","$last_",$vars);
<?php $string = "3, 4, 5"; echo $string = preg_replace('/,( \d)$/', ' &\1', $string); ?>
strrpos находит последнее появление указанной строки. $ str = '1, 2, 3';
$index = strrpos( $str, ',' ); if( $index !== FALSE ) $str[ $index ] = '&';