태그 보관물: arrays

arrays

PHP의 배열에서 쉼표로 구분 된 목록을 어떻게 생성합니까?

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


답변

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."
        }


답변

현재 반복이 배열의 마지막 값이 아닌지 확인하는 IF 문을 FOR 루프에 사용하는 것을 선호합니다. 그렇지 않은 경우 쉼표를 추가하십시오.

$fruit = array("apple", "banana", "pear", "grape");

for($i = 0; $i < count($fruit); $i++){
    echo "$fruit[$i]";
    if($i < (count($fruit) -1)){
      echo ", ";
    }
}


답변

때로는 특정 인스턴스에서이를 위해 PHP가 필요하지도 않습니다 (예를 들어 목록 항목은 렌더링시 고유 한 일반 태그에 있음). 렌더링 된 후 별도의 요소 인 경우 CSS를 통해 모든 요소에 항상 쉼표를 추가 할 수 있지만 마지막 하위 요소는 추가 할 수 있습니다. 스크립트에서.

실제로 백본 앱에서 이것을 많이 사용하여 임의의 코드 지방을 잘라냅니다.

.likers a:not(:last-child):after { content: ","; }

기본적으로 요소를보고 마지막 요소를 제외한 모든 항목을 대상으로하며 각 항목 뒤에 쉼표를 추가합니다. 케이스가 적용되는 경우 스크립트를 전혀 사용하지 않아도되는 대체 방법입니다.


답변

$fruit = array('apple', 'banana', 'pear', 'grape');    
$commasaprated = implode(',' , $fruit);