2012-07-06 41 views
5

Tôi đang làm việc để kết hợp danh sách phát âm thanh j5 của trình phát video j561php cho mỗi dấu phân cách bằng dấu phẩy trừ

Tôi đang sử dụng foreach để tạo phần tử tập lệnh cho từng mục trong danh sách phát. Mọi thứ đều hoạt động như mong đợi, ngoại trừ tôi đã bao gồm dấu phẩy trong vòng lặp, nhưng tôi cần một cách để viết dấu phẩy làm dấu phân tách ngoại trừ mục cuối cùng.

đây là những gì tôi có cho đến nay để tạo danh sách phát jplayer.

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

     title:"Each Song Title", 

     mp3:"Each song mp3 url" 

    },<?php endif; endforeach; ?> 

mà mang lại cho tôi

{ 

     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" 

    }, 

này được kết quả mong muốn của tôi

{ 

     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" 

    } 

thể bất cứ ai chỉ cho tôi đi đúng hướng?

+1

tại sao không bạn chỉ cần 'json_encode' nó? – Gordon

Trả lời

11

tôi sử dụng next() cho nó:

$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 
    } 
} 
+0

a) 'foreach' lặp qua một bản sao của mảng và b)' next() 'di chuyển con trỏ. OK, nó hoạt động, nhưng nó không hoạt động, vì lý do bạn nghĩ nó hoạt động;) Thực tế bạn đang lặp qua hai mảng (giống hệt nhau) cùng một lúc và bạn dừng lại, khi bạn nhận ra, rằng bạn đang ở cuối cái thứ hai. – KingCrunch

+0

oh ... Cập nhật: Nó không hoạt động hoàn toàn http://codepad.org/qTmlyDwU – KingCrunch

+0

@KingCrunch, cảm ơn. Xem chỉnh sửa của tôi. – pltvs

2

gì bạn cũng có thể làm được chứ không phải là echo nó trực tiếp vào trình duyệt, lưu trữ nó trong một chuỗi đầu tiên.

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

Điều này cũng cho phép nó được sử dụng ở nơi khác trong toàn bộ mã của bạn, nếu cần.

4

Bạn có nghĩa là JSON?

echo json_encode($array); 

Ngoài ra bạn có thể sử dụng chức năng mảng thay vì

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

Chỉ cần để làm cho nó hoàn chỉnh: Một for -solution

for ($n = count($array), $i = 0; $i < $n; $i++) { 
    echo sprintf('{title:"%s",mp3:"%s"}', $array[$i]['title'], $array[$i]['mp3']) 
    . ($i < $n-1 ? ',' : ''); 
} 
Các vấn đề liên quan