избавляется от разделителя - PullRequest
1 голос
/ 10 марта 2011

привет, у меня возникли следующие проблемы, я использую следующий код.

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

в идеале я бы хотел, чтобы каждая строка хранилась вместе.

Любая помощь Пожалуйста, у меня сегодня плохой день, моя голова полностью жарена ???

Ответы [ 5 ]

3 голосов
/ 10 марта 2011

Попробуйте использовать implode :

while ($row = mysql_fetch_array($new)) {
    $myrows = array();
    foreach ($sam[0] as $v) {
        myrows[] = $row[$v];
    }
    echo implode($DELIMITER, $myrows).'<br />';
}
1 голос
/ 10 марта 2011

Способ 1: Запишите данные каждой строки в массив, а затем используйте implode

Способ 2: установите флаг, чтобы пропустить разделитель один раз;


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

0 голосов
/ 10 марта 2011

Спасибо за все ответы, которые люди могут заставить его работать со следующими;)

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

}
0 голосов
/ 10 марта 2011

Вы можете попробовать что-то вроде этого

// 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 />";
}
0 голосов
/ 10 марта 2011

Вы можете вставить в массив (обозначенный как альтернативный способ) нужные вам значения и избежать 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/>';
}
...