今天刚开始学习PDO,并且正在使用PHP / MySQL学习Twitter克隆。
这是一段代码片段,它应该在某个user_id下显示数据库中的所有推文(类似于twitter提要)。
<?php
$all_tweets = showtweets($pdo, $_SESSION['user_id']);
if (count($all_tweets)) {
foreach($all_tweets as $key => $value) {
?>
<div class="tweet">
<?php
echo $key['tweet'] . "<br>
Written By: " . $_SESSION['user_id'] . " on " . $key['time'] . "<br>";
?>
</div>
<?php
};
} else {
echo "You haven't posted anything yet!";
};
?>
这是我的PHP代码中的showtweets函数
function showtweets($pdo, $user_id) {
$show_tweets_stmt = "SELECT tweet, time FROM tweets WHERE id=:user_id
ORDER BY time DESC";
$show_tweets = $pdo->prepare($show_tweets_stmt);
$show_tweets->bindParam(':user_id', $_SESSION['user_id']);
$show_tweets_execute = $show_tweets->execute();
if (!$show_tweets_execute) {
printf("Tweets failed to be retrieved! <br> %s", $pdo->error);
} else {
$tweets_array = $show_tweets->fetchAll();
return $tweets_array;
};
}
我尝试运行isset($all_tweets)
并返回true,而回显count($all_tweets)
则显示为0.
我认为我的addtweets
功能代码出了问题,我整天都在讨论这个问题,但是我无法让它工作。
有什么建议吗?非常感谢
答案 0 :(得分:1)
来自PHP,isset:
如果var存在并且其值不是NULL,则返回TRUE,FALSE 否则。
因此,在您的情况下,变量$all_tweets
已设置,且值不为NULL。
更具体地说,您的问题在于如何确定数组是否为空。
要确定PHP中的$all_tweets
是empty - 互联网,以及(主要)很多StackOverflow帖子强烈建议使用empty()
,(来自PHP文档):
如果var存在并且具有非空的非零值,则返回FALSE。 否则返回TRUE。
以下内容被认为是空的:
- “”(空字符串)
- 0 (0为整数)
- 0.0 (0作为浮动)
- “0”(0为字符串)
- 的 NULL 强>
- 的 FALSE 强>
- array()(空数组)
- $ var; (声明的变量,但没有值)
此外,有关此问题的更多阅读,请检查: How to check whether an array is empty using PHP?
答案 1 :(得分:0)
如果要查看数组是否为空,请使用empty($array)
isset($array)
返回true,因为存在空数组。