我试图将函数返回的字符串与另一个字符串连接起来,但问题是它不是在字符串的末尾连接,而是在字符串的开头插入函数返回的值。 / p>
这是执行该操作的代码片段:
$dados = '';
if ($unidade == 'Goiânia') {
$dados = "58, 63, 66, 66, 81, 85, 86, 86, 89, 90, 90,";
} elseif ($unidade == 'Jataí') {
$dados = "11, 15, 18, 20, 21, 23, 23, 24, 24, 25, 25,";
} elseif ($unidade == 'Catalão') {
$dados = "9, 14, 16, 19, 24, 25, 25, 25, 25, 26, 26,";
} elseif ($unidade == 'Goiás') {
$dados = "1, 1, 1, 1, 3, 3, 3, 3, 5, 6, 7";
}
// Concatenating the string with the function
// the function returns a string.
$dados .= consultaSimplesRetornaString($sql);
echo $dados;
我的预期输出是(在第一个IF为真的情况下):
58, 63, 66, 66, 81, 85, 86, 86, 89, 90, 90,
我实际得到的是:
, 58, 63, 66, 66, 81, 85, 86, 86, 89, 90, 90,
我猜这种连接不适用于函数,因为它适用于php变量,我应该采用另一种方式。
谢谢!
编辑:
根据要求,这里是函数consultaSimplesRetornaString()和$ sql参数: (该功能正常,我在整个文档中使用它。)
function consultaSimplesRetornaString($sql)
{
// Connecting to te db
$conn = connect();
$result = $conn->query($sql);
if (!$result)
echo $conn->error;
$aux = 0;
while ($row = $result->fetch_assoc()) {
$array[$aux] = $row["count"];
$aux++;
}
$str = "";
foreach($array as $key => $value) {
$value = round($value, 2);
$str.= "$value ,";
}
$conn->close();
echo ($str);
}
这是$ sql参数:
$ anoSelecionadoPOST和$ unidade只是简单的变量,并且工作得很好。
$sql = "SELECT COUNT(distinct curso) AS count FROM `$anoSelecionadoPOST` WHERE `ano_ingresso`= '$anoSelecionadoPOST' and `Regional` = '$unidade'";
答案 0 :(得分:1)
我相信您的数据库会保留损坏的数据,因为代码应该可以工作。这条线特别闻起来:
$array[$aux] = $row["count"]
并使用来自查询结果的任何内容填充$array
。您可能希望将var_dump($row['count']);
添加到该循环以验证每个附加值是什么,并修复您的数据库内容,或者,如果该有效案例没有“计数”,则可以numeric执行一些检查以防止使用空数据(或使用0
代替)。
此外,在环路中粘合$array
的内容是一种浪费。您应该使用implode()。
PS:一般来说,consultaSimplesRetornaString()
在错误处理方面是非常糟糕的代码。
答案 1 :(得分:1)
由于consultaSimplesRetornaString函数中的echo ($str);
。所以你首先回显函数的结果,然后回显$ dados;
试试这个:
$dados = [];
if ($unidade == 'Goiânia') {
$dados = [58, 63, 66, 66, 81, 85, 86, 86, 89, 90, 90];
} elseif ($unidade == 'Jataí') {
$dados = [11, 15, 18, 20, 21, 23, 23, 24, 24, 25, 25];
} elseif ($unidade == 'Catalão') {
$dados = [9, 14, 16, 19, 24, 25, 25, 25, 25, 26, 26];
} elseif ($unidade == 'Goiás') {
$dados = [1, 1, 1, 1, 3, 3, 3, 3, 5, 6, 7];
}
// Fill the array with the function results from DB
// the function returns an array.
$dados = consultaSimplesRetorna($sql, $dados);
echo join(',', $dados);
function consultaSimplesRetorna($sql, $result = null)
{
// Connecting to te db
$conn = connect();
$rowset = $conn->query($sql);
if (!$rowset) echo $conn->error;
if (!$result) $result = [];
while ($row = $rowset->fetch_assoc()) {
$result[] = $row["count"];
}
$conn->close();
return $result;
}