[英]PHP - Why is it concatenating at the beginning?
我试图将一个函数返回的字符串与另一个字符串连接起来,但是问题是它不是在字符串的末尾连接,而是在字符串的开头插入了函数返回的值。
这是执行此操作的代码片段:
$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为true的情况下):
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'";
我相信您的数据库会保存损坏的数据,因为代码应该可以正常工作。 此行特别有气味:
$array[$aux] = $row["count"]
并使用查询结果中的任何内容填充$array
。 您可能要添加var_dump($row['count']);
到该循环中,以验证每个增加的值是什么,并修复数据库内容,或者在没有“计数”数字的有效情况下,进行一些检查以防止使用空数据(或改为使用0
)。
同样,在循环中粘贴$array
内容也是浪费。 您应该为此使用implode() 。
PS:就错误处理而言,一般来说consultaSimplesRetornaString()
是非常糟糕的代码。
因为echo ($str);
在consultaSimplesRetornaString函数中。 因此,您首先回显函数的结果,然后回显$ 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;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.