这是我目前的代码:
function get_coins() {
global $conn;
$new_sql = "SELECT * FROM marketcaps ORDER BY cap DESC LIMIT 25";
$new_result = $conn->query($new_sql);
while ($row = $new_result->fetch_assoc()) {
$id = $row["id"];
$coin = $row["coin"];
$cap = $row["cap"];
echo $coin . '~USD,';
}
}
$coins = get_coins();
这是我无法弄清楚的:
行$coins = get_coins();
正在回显我函数中的所有数据,我不明白为什么。我知道我的函数有这一行:echo $coin . '~USD,';
但是当我添加$coins = get_coins();
?
我不应该添加这个吗?
$coins = get_coins();
$echo coins;
基本上我不想回应任何东西,我只想将输出分配给变量。有没有一种简单的方法可以做到这一点?
答案 0 :(得分:1)
您需要向函数添加return
语句,并且在处理多行时,将它们整理成一个数组(按ID索引)。
http://php.net/manual/en/function.return.php
function get_coins()
{
global $conn;
$coins = array();
$new_sql = "SELECT * FROM marketcaps ORDER BY cap DESC LIMIT 25";
if( $new_result = $conn->query($new_sql) )
{
while( $row = $new_result->fetch_assoc() )
{
$coins[ $row["id"] ] = $row["coin"] . '~USD,';
}
}
return ( !empty( $coins ) ) ? $coins : null;
}
答案 1 :(得分:0)
以下是我使用我的解决方案完成的原则,它返回完整的结果集数组:
global
,将$conn
作为参数传递给函数。建议代码:
function get_coins($conn){
$result=$conn->query("SELECT id,coin,cap FROM marketcaps ORDER BY cap DESC LIMIT 25");
for($resultset=[]; $row=$result->fetch_assoc(); $resultset[]=$row); // inspired by: http://php.net/manual/en/mysqli-result.fetch-assoc.php#112924
return $resultset;
}
$coin_rows=get_coins($conn);
foreach($coin_rows as $row){
// ... reference $row['id'] , $row['coin'] , $row['cap'] during your processes
}