2017-09-06 10 views
1

HIIから最後のカンマを削除する私はこのような2レベルのforeachループを持っていると私は、各ループからこのプログラムのPHPマルチレベルのforeachループは、ループ

/* Here is the mysql query */ 
foreach($loop1 as $val1){ 
    $showvalone = $val1['data1']; 
    echo "[".$showvalone; 
    /* Here is the second MySQL query connected with 1st query */ 
    foreach($loop2 as $val2){ 
     $showvaltwo[] = $val2['data2']; 
    } 
    echo implode(",",$showvaltwo); 
    echo "] , "; 
} 

出力の最後のコンマを削除する:

[ 1 
    one , 
    two , 
    three 
], 
[ 2 
    one , 
    two , 
    three 
], 

は、と私はすでに破を使用しています。この

[ 1 
    one , 
    two , 
    three 
], 
[ 2 
    one , 
    two , 
    three 
] 

のように、トリムが、第2取り除くだけでなく、一つのループを削除されたいです。 私の問題を解決してください、ありがとう。

+0

if文の中に 'echo"]、 ";'を入れるだけですか?あなたのforループの最後の項目であれば、 'echo'] ";' else '' echo "]、"; 'それ以外の場合は、 – sorifiend

+0

foreachの前にあなたの$ showvaltwo = array()をリセットする($ loop2を$ val2として) –

答えて

0

情報を直接出力するのではなく、文字列として変数に入れることができます。これにより、ループの後の最後のカンマをrtrimして情報をエコーすることができます。

// Declare variable to hold the string of information. 
$values = ""; 

/* Here is the mysql query */ 
foreach($loop1 as $val1) 
{ 
    $showvalone = $val1['data1']; 
    $values .= "[".$showvalone; 

    /* Here is the second MySQL query connected with 1st query */ 
    foreach($loop2 as $val2) 
    { 
     $showvaltwo[] = $val2['data2']; 
    } 

    $values .= implode(",",$showvaltwo); 
    $values .= "] , "; 
} 

// Remove the last comma and spaces from the string. 
$values = rtrim($values, ' , '); 

// Output the information. 
echo $values; 
1

問題を回避し、次の出力の先頭に '、'を追加することができます。後でそれを取り外す必要はありません。
ただし、最初の出力にコンマは使用しません。

$addComma = ''; // should be empty for the first lines. 
foreach($loop1 as $val1){ 
    $showvalone = $val1['data1']; 
    echo $addComma."[".$showvalone; 
    /* Here is the second MySQL query connected with 1st query */ 
    foreach($loop2 as $val2){ 
     $showvaltwo[] = $val2['data2']; 
    } 
    echo implode(",",$showvaltwo); 
    echo "]"; 
    $addComma = " , "; // any lines following will finish off this output 
}