foreach를 사용하여 배열의 항목을 반복하고 쉼표를 추가하는 방법을 알고 있지만 항상 마지막 쉼표를 제거해야하는 고통이 있습니다. 쉬운 PHP 방법이 있습니까?
$fruit = array('apple', 'banana', 'pear', 'grape');
궁극적으로 나는 원한다
$result = "apple, banana, pear, grape"
foreach를 사용하여 배열의 항목을 반복하고 쉼표를 추가하는 방법을 알고 있지만 항상 마지막 쉼표를 제거해야하는 고통이 있습니다. 쉬운 PHP 방법이 있습니까?
$fruit = array('apple', 'banana', 'pear', 'grape');
궁극적으로 나는 원한다
$result = "apple, banana, pear, grape"
답변:
이를 위해 implode 를 사용하고 싶습니다 .
즉 :
$commaList = implode(', ', $fruit);
후행없이 쉼표를 추가하는 방법이 있습니다. 동시에 다른 조작을해야하는 경우이 작업을 수행하고 싶을 것입니다. 예를 들어 각 과일을 인용 한 다음 모두 쉼표로 구분할 수 있습니다.
$prefix = $fruitList = '';
foreach ($fruits as $fruit)
{
$fruitList .= $prefix . '"' . $fruit . '"';
$prefix = ', ';
}
또한 각 항목 뒤에 쉼표를 추가하는 "일반적인"방법 (이전에했던 것처럼 들림)을 수행하고 마지막 항목을 잘라 내야한다면 $list = rtrim($list, ', ')
. substr
이런 상황에서 많은 사람들이 불필요하게 주위를 비웃는 것을 봅니다 .
이것이 내가해온 방법입니다.
$arr = array(1,2,3,4,5,6,7,8,9);
$string = rtrim(implode(',', $arr), ',');
echo $string;
산출:
1,2,3,4,5,6,7,8,9
라이브 데모 : http://ideone.com/EWK1XR
편집 : @joseantgv의 의견에 rtrim()
따라 위의 예에서 제거 할 수 있어야합니다 . 즉 :
$string = implode(',', $arr);
rtrim()
. 문자열 끝에 추가 쉼표가있는 문제가 있었지만 그 상황은 기억 나지 않습니다.
and
결국 결과 :
$titleString = array('apple', 'banana', 'pear', 'grape');
$totalTitles = count($titleString);
if ($totalTitles>1) {
$titleString = implode(', ', array_slice($titleString, 0, $totalTitles-1)) . ' and ' . end($titleString);
} else {
$titleString = implode(', ', $titleString);
}
echo $titleString; // apple, banana, pear and grape
Lloyd의 답변과 비슷하지만 모든 크기 배열에서 작동합니다.
$missing = array();
$missing[] = 'name';
$missing[] = 'zipcode';
$missing[] = 'phone';
if( is_array($missing) && count($missing) > 0 )
{
$result = '';
$total = count($missing) - 1;
for($i = 0; $i <= $total; $i++)
{
if($i == $total && $total > 0)
$result .= "and ";
$result .= $missing[$i];
if($i < $total)
$result .= ", ";
}
echo 'You need to provide your '.$result.'.';
// Echos "You need to provide your name, zipcode, and phone."
}
때로는 특정 인스턴스에서이를 위해 PHP가 필요하지도 않습니다 (예를 들어 목록 항목은 렌더링시 고유 한 일반 태그에 있음). 렌더링 된 후 별도의 요소 인 경우 CSS를 통해 모든 요소에 항상 쉼표를 추가 할 수 있지만 마지막 하위 요소는 추가 할 수 있습니다. 스크립트에서.
실제로 백본 앱에서 이것을 많이 사용하여 임의의 코드 지방을 잘라냅니다.
.likers a:not(:last-child):after { content: ","; }
기본적으로 요소를보고 마지막 요소를 제외한 모든 항목을 대상으로하며 각 항목 뒤에 쉼표를 추가합니다. 케이스가 적용되는 경우 스크립트를 전혀 사용하지 않아도되는 대체 방법입니다.
$fruit = array('apple', 'banana', 'pear', 'grape');
$commasaprated = implode(',' , $fruit);
기능적 솔루션은 다음과 같습니다.
$fruit = array('apple', 'banana', 'pear', 'grape');
$sep = ',';
array_reduce(
$fruits,
function($fruitsStr, $fruit) use ($sep) {
return (('' == $fruitsStr) ? $fruit : $fruitsStr . $sep . $fruit);
},
''
);
이걸 따라
$teacher_id = '';
for ($i = 0; $i < count($data['teacher_id']); $i++) {
$teacher_id .= $data['teacher_id'][$i].',';
}
$teacher_id = rtrim($teacher_id, ',');
echo $teacher_id; exit;