1

こんにちは、次の問題があります。次のコードを使用しています。

<?php

//DB CONNECTION

$ROWS = "id,firstname,lastname";

// explode at the comma and insert into an array
$test = explode("," , $ROWS);

//adds array test to the var sam
$sam = array($test);

// querys the database
$new = mysql_query("SELECT * FROM {$DB_TABLE}");

// while loop to loop through selected fields
while ($row = mysql_fetch_array($new)) {

    foreach ($sam[0] as $v) {

        echo $row[$v] . $DELIMITER . "<br />";

    }

echo "<br />";

}
?>

これにより、次のように出力されます。

834(|)Step(|)Thompson(|)
835(|)Lucy(|)kim(|)
836(|)Iwan(|)Will(|)
837(|)Sarah (|)Good(|)

私が苦労しているのは、最後の区切り文字を取り除きたいということです

そうなるだろう

834(|)Step(|)Thompson
835(|)Lucy(|)kim
836(|)Iwan(|)Will
837(|)Sarah (|)Good

私は使ってみました

// while loop to loop through selected fields
while ($row = mysql_fetch_array($new)) {

foreach ($sam[0] as $v) {

        $test = $row[$v] . $DELIMITER;

        echo substr($test, 0, -1);  
}

echo "<br />";


}

しかし、これはそれらすべての区切り文字を取り除きます???

これにより、次のように出力されます。

834Stephompson
835Lucykim
836IwanWill
837SarahGood

理想的には、各行を一緒に保存することを望みます。

何か助けてください今日は悪い日を過ごしています。私の頭は完全に揚げられていますか???

4

5 に答える 5

3

implodeを使ってみてください:

while ($row = mysql_fetch_array($new)) {
    $myrows = array();
    foreach ($sam[0] as $v) {
        myrows[] = $row[$v];
    }
    echo implode($DELIMITER, $myrows).'<br />';
}
于 2011-03-10T15:15:09.523 に答える
1

方法 1: 各行のデータを配列に書き込み、implodeを使用する

方法 2: デリミタを 1 回省略するフラグを設定します。


<?php
while (...)
{
    $tmp = 1;
    foreach (...)
    {
        if ($tmp)
        {
            $tmp = 0;
        }
        else
        {
            echo $DELIMETER;
        }
        echo $row[...];
    }
}

于 2011-03-10T15:16:40.623 に答える
0

必要な値を配列に挿入し (別の方法として示されています)、データベースから取得した各行の foreach を回避することもできますが、取得したコードを実際に使用したい場合は、次のようにすることができます。

while ($row = mysql_fetch_array($new)) {
    $values = array();
    foreach ($sam[0] as $v) { 
        $values[] = $row[$v];
    }
    echo implode($DELIMITER , $values) . '<br/>';
}

または代替

while ($row = mysql_fetch_array($new)) {
    $values = array($row['id'], $row['firstname'], $row['lastname']);
    echo implode('(|)',$values) . '<br/>';
}
于 2011-03-10T15:14:45.403 に答える
0

このようなものを試すことができます

// querys the database
$new = mysql_query("SELECT * FROM {$DB_TABLE}");

// while loop to loop through selected fields
while ($row = mysql_fetch_array($new)) {

    echo $row[0];
    for($i = 1; $i < count($row); $i++) {
        echo $DELIMITER.$row[$i];
    }
    echo "<br />";
}
于 2011-03-10T15:14:51.163 に答える
0

人々が次のように動作させることができたすべての応答に感謝します;)

// querys the database
$new = mysql_query("SELECT {$ROWS} FROM {$DB_TABLE}");

// while loop to loop through selected fields
while ($row = mysql_fetch_assoc($new)) {

    $tmp = array();

    $tmp[] = implode($DELIMITER, $row);

    echo $tmp[0] . "<br />";

}
于 2011-03-10T16:03:40.123 に答える