繁体   English   中英

PHP-为什么在开始时将其串联?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM