Pertanyaan php untuk masing-masing dengan koma separator kecuali yang terakhir


Saya bekerja pada incorperating playlist audio html5 jplayer

Saya menggunakan foreach untuk membuat elemen skrip untuk setiap item daftar putar. Semuanya berfungsi seperti yang diharapkan, Kecuali saya menyertakan koma dalam loop, tapi saya perlu cara untuk menulis koma sebagai pemisah kecuali untuk item terakhir.

di sini adalah apa yang saya punya sejauh ini untuk menghasilkan daftar putar jplayer.

<?php foreach( $songs as $song ): if( !empty($song) ): ?>{

        title:"Each Song Title",

        mp3:"Each song mp3 url"

    },<?php endif; endforeach; ?>

yang memberi saya

    {

        title:"Partir",

        mp3:"http://www.jplayer.org/audio/mp3/Miaow-09-Partir.mp3"

    },

    {

        title:"Thin Ice",

        mp3:"http://www.jplayer.org/audio/mp3/Miaow-10-Thin-ice.mp3"

    },
    {

        title:"Ice man",

        mp3:"http://www.jplayer.org/audio/mp3/Miaow-10-Thin-ice.mp3"

    },

Ini adalah hasil yang saya inginkan

    {

        title:"Partir",

        mp3:"http://www.jplayer.org/audio/mp3/Miaow-09-Partir.mp3"

    },

    {

        title:"Thin Ice",

        mp3:"http://www.jplayer.org/audio/mp3/Miaow-10-Thin-ice.mp3"

    },
    {

        title:"Ice man",

        mp3:"http://www.jplayer.org/audio/mp3/Miaow-10-Thin-ice.mp3"

    }

Adakah yang bisa mengarahkan saya ke arah yang benar?


4
2017-07-06 06:28


asal


Jawaban:


saya menggunakan berikutnya() untuk itu:

$arr = array(1,2,3,4,5,6,7);
$copy = $arr;
foreach ($arr as $val) {
    echo $val;
    if (next($copy )) {
        echo ','; // Add comma for all elements instead of last
    }
}

12
2017-07-06 06:32



Maksud Anda JSON?

echo json_encode($array);

Anda juga dapat menggunakan fungsi array sebagai gantinya

// Create single items first
$array = array_map(
  function ($item) {return sprintf(
      '{title:"%s",mp3:"%s"}',
      $item['title'],
      $item['mp3']
  );},
  $array
);
// Then concatenate
echo implode(',' $array);

Hanya untuk membuatnya lengkap: A for-larutan

for ($n = count($array), $i = 0; $i < $n; $i++) {
  echo sprintf('{title:"%s",mp3:"%s"}', $array[$i]['title'], $array[$i]['mp3'])
    . ($i < $n-1 ? ',' : '');
}

4
2017-07-06 06:54



Apa yang juga dapat Anda lakukan, bukan langsung echo ke browser, menyimpannya dalam string terlebih dahulu.

<?php 
$string = "";
foreach( $songs as $song ) { 
    if( !empty($song) )
    { 
        $string .= '
    {

        title:"Each Song Title",

        mp3:"Each song mp3 url"

    },

    ';
    }
 }
 $string = substr($string, 0, -1); //Removes very last comma.
 echo $string;
 ?>

Ini juga memungkinkan untuk digunakan di tempat lain di seluruh kode Anda, jika diperlukan.


2
2017-07-06 06:43