数组到字符串错误

z6psavjg  于 2021-06-21  发布在  Mysql
关注(0)|答案(2)|浏览(356)

我无法显示 .$app->reactieDoor($topic['id']); 它会告诉我一个错误,我不知道为什么会这样!请帮帮我。
ps我是新的,所以如果我在代码中遗漏了什么,请告诉我。
带错误的行:

echo ' laatste reactie: ' .$app->tijd_reactie($topic['id']) . ' door ' .$app->reactieDoor($topic['id']);

错误仅在我尝试使用此部件时显示:

.$app->reactieDoor($topic['id']);

功能代码:

function reactieDoor($topicid) {
        $this->database->query("SELECT klanten.voornaam, klanten.achternaam FROM reacties 
        LEFT JOIN klanten ON klanten.id=reacties.klant_id
        WHERE reacties.topic_id=:topic_id ORDER BY create_time DESC LIMIT 1"); 

        $this->database->bind(":topic_id", $topicid);    
        $reactie = $this->database->single();

        return $reactie;

    }

我得到的错误

tsm1rwdh

tsm1rwdh1#

我猜是的 $this->database->single(); 返回一个数组(包含名字和姓氏),因此 return $reactie; 从函数中,这是一个数组,你试图插入到字符串中。。。因此出现了错误。
由于该数组应该包含名字和姓氏,请尝试将其分配给 $name 先使用变量,然后改用它。
比如:

$name = "Mysterious Stranger";
if($n = $app->reactieDoor($topic['id'])) {
    $name = "{$n['voornaam']} {$n['achternaam']}";
}

echo " laatste reactie: "
    . $app->tijd_reactie($topic['id'])
    . " door {$name}";

如果函数总是返回一个包含名称的字符串,那么最好在函数中这样做。
在这种情况下,您可以将函数改为:

function reactieDoor($topicid) {
    $this->database->query("SELECT klanten.voornaam, klanten.achternaam FROM reacties 
        LEFT JOIN klanten ON klanten.id=reacties.klant_id
        WHERE reacties.topic_id=:topic_id ORDER BY create_time DESC LIMIT 1"); 

    $this->database->bind(":topic_id", $topicid);    
    $reactie = $this->database->single();

    return $reactie ? 
        "{$reactie['voornaam']} {$reactie['achternaam']}" :
        "Mysterious Stranger";
}
iszxjhcz

iszxjhcz2#

.$app->reactieDoor($topic['id']);

这行代码提供一个数组而不是一个结果。尝试转储结果。

var_dump( $app->reactieDoor($topic['id']) );

你会看到它是数组

相关问题