PHP - 为什么它在开始时连接?

时间:2017-02-10 12:01:17

标签: php

我试图将函数返回的字符串与另一个字符串连接起来,但问题是它不是在字符串的末尾连接,而是在字符串的开头插入函数返回的值。 / 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'";

2 个答案:

答案 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;
}