爆炸数组并定义变量


Explode array and define Variables

返回

"soccertennisfootball"

$interestsquery  = "SELECT * FROM user_interests WHERE user_id = " . $usersClass->userID();
$result = mysql_query($interestsquery);
while($row = mysql_fetch_array($result, MYSQL_ASSOC))
{
echo "{$row['interest']}";
} 

谁能解释一下我怎么能爆炸的数据和分配它作为变量?我一直在看教程,但他们似乎都有某种界限?


我试过下面的程序,但它的行为很奇怪,打印了很多次?

以下…

$interestsquery  = "SELECT * FROM user_interests WHERE user_id = " . $usersClass->userID();
$result = mysql_query($interestsquery);
while($row = mysql_fetch_array($result, MYSQL_ASSOC))
{
 $interests[] = $row['interest'];
 $interest1 = $interests[0];
 $interest2 = $interests[1];
 $interest3 = $interests[2];
 print $interest1 . " - " . $interest2 . " - " . $interest3;
} 

输出

"网球-网球-足球-网球-足球"

它们不是一个字符串,你只是把它回显出来。把它放在某个地方。这段代码将它存储在一个新数组中。它可能有用,但这取决于你想用它做什么。

$interests = array();
while($row = mysql_fetch_array($result, MYSQL_ASSOC))
{
     $interests[] = $row['interest'];
} 

在while循环的每次迭代中,您只能访问其中一个结果(首先是'soccer',然后是'tennis',然后是'football')。在第二个代码块中,您试图以某种方式访问while循环中的所有三个代码块。

相反,在while循环中,将单个结果压入数组:

$interests = array();
while($row = mysql_fetch_array($result, MYSQL_ASSOC)) {
    $interests[] = $row['interest'];
    //First 'soccer' will be pushed into $interests, then 'tennis', then 'football'.
}

现在您已经拥有了数组中的所有值,您可以单独访问每个值。这是在while循环之外完成的:

echo $interests[0] . ' - ' . $interests[1] . ' - ' . $interests[2];

这将打印"soccer - tennis - football"。

或者,就像有些人说的,您可以循环遍历$interests数组并回显每个值,或者对它们做任何您想做的事情。

将它们放入数组中,然后按您的意愿处理。

$interests = array();
while (...)
{
  $interests[] = $row['interest'];
}

从php中提取方法http://php.net/manual/en/function.extract.php

 $interestsquery  = "SELECT * FROM user_interests WHERE user_id = " . $usersClass->userID();
    $result = mysql_query($interestsquery);
    while($row = mysql_fetch_array($result, MYSQL_ASSOC))
    {
     extract($row);
     echo $interest;
    }

使用下面的代码片段在数组

中存储值
$interestsquery  = "SELECT * FROM user_interests WHERE user_id = " . $usersClass->userID();
$result = mysql_query($interestsquery);
$result = array();
while($row = mysql_fetch_array($result, MYSQL_ASSOC))
{
$result[] = $row['interest']
}
print_r($result);

考虑到您的澄清(使用MySQL, interest是唯一的列,以及示例输出),我建议使用GROUP_CONCAT()。这把它全部放在MySQL端,并允许您从$result中提取单行。

尝试以下示例查询:

$query = "SELECT GROUP_CONCAT(interest SEPARATOR ' - ') FROM user_interests
WHERE user_id = " . $usersClass->userID() . "
GROUP BY user_id";