3

我正在尝试将从数据库数组中检索到的段落分解为单独的单词。这是做这件事的正确方法吗,因为它目前给出一个错误,说explode() 需要2 个参数,所以它一定不能拾取$row 数组。

function words() {
        $query = mysql_query("SELECT text FROM table WHERE textID = 1");
        while($row = mysql_fetch_array($query)) {
            $e[] = explode(" ", $row);
            foreach($e as $r) {
                echo $r;
            }
        }
    }
4

4 回答 4

3
function words() {
        $query = mysql_query("SELECT text FROM table WHERE textID = 1");
        while($row = mysql_fetch_array($query)) {
            $e[] = explode(" ", $row[0]);
            foreach($e as $r) {
                echo $r;
            }
        }
    }

$row 是数组。选择要爆炸的第一个元素。阅读Explode的文档。

于 2012-04-29T10:10:27.827 回答
0
function words() { 
        $query = mysql_query("SELECT text FROM table WHERE textID = 1"); 
        while($row = mysql_fetch_array($query)) { 
            $e[] = explode(" ", $row[0]); 
            foreach($e as $r) { 
                echo $r; 
            } 
        } 
    } 
于 2012-04-29T10:29:52.503 回答
0

您在这里使用了错误的功能架构。
你根本不需要words()功能。explode足够。
虽然您强烈需要一个从 mysql 获取数据的函数,这显然与您的爆炸需求无关。
另请注意,函数不应进行任何输出,而应仅保留值(仅用于输出的函数除外)。

所以,函数可以是

function dbgetvar($query){
  $res = mysql_query($query);
  if (!$res) {
    trigger_error("dbget: ".mysql_error()." in ".$query);
    return FALSE;
  }
  $row = mysql_fetch_row($res);
  if (!$row) return NULL;
  return $row[0];
}

你的代码变得如此简单

$text  = dbgetvar("SELECT text FROM table WHERE textID = 1");
$words = explode(" ",$text);
foreach ($words as $w) echo $w;
于 2012-04-29T10:39:45.303 回答
-1
function words() {
        $query = mysql_query("SELECT text FROM table WHERE textID = 1");
        while($row = mysql_fetch_array($query)) {
            $e = explode(" ", $row);
            foreach($e[0] as $r) {
                echo $r;
            }
            }
    }

$row 完全用字段值填充,因此 $e[0] 是正确的变量。

于 2012-04-29T10:44:47.047 回答