将 PHP 函数的输出分配给变量
Assign output of PHP function to a variable
这是我当前的代码:
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;
基本上我不想回显任何东西,我只想将输出分配给一个变量。有简单的方法吗?
您需要在您的函数中添加一个 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;
}
以下是我在解决方案中融入的原则,returns 完整的结果集数组:
- 不要使用
global
,将 $conn
作为参数传递给函数。
- 不要声明一次性变量,除非它显着提高可读性或有助于调试过程。
- 只查询您打算处理的特定列和行。
建议代码:
function get_coins($conn): array {
return $sql
->query("SELECT id,coin,cap
FROM marketcaps
ORDER BY cap DESC
LIMIT 25")
->fetch_all(MYSQLI_ASSOC);
}
foreach (get_coins($conn) as $row) {
// ... reference $row['id'] , $row['coin'] , $row['cap'] during your processes
}
这是我当前的代码:
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;
基本上我不想回显任何东西,我只想将输出分配给一个变量。有简单的方法吗?
您需要在您的函数中添加一个 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;
}
以下是我在解决方案中融入的原则,returns 完整的结果集数组:
- 不要使用
global
,将$conn
作为参数传递给函数。 - 不要声明一次性变量,除非它显着提高可读性或有助于调试过程。
- 只查询您打算处理的特定列和行。
建议代码:
function get_coins($conn): array {
return $sql
->query("SELECT id,coin,cap
FROM marketcaps
ORDER BY cap DESC
LIMIT 25")
->fetch_all(MYSQLI_ASSOC);
}
foreach (get_coins($conn) as $row) {
// ... reference $row['id'] , $row['coin'] , $row['cap'] during your processes
}