将PHP数组更改为单独的字符串
我有一个从sql返回的数组,我需要将它们放入单独的字符串中,以便在页面上使用。它位于数据库中的一行之外,列出了用户拥有的所有文件夹。 数据库中的示例john有一个红色文件夹、绿色文件夹和蓝色文件夹。 我运行查询并使用fetchAll返回john的文件夹。我有一个数组。我可以回显数组并输出redfoldergreenfolderbluefolder 如何获取数组并将其拆分为单独的字符串 PHP代码将PHP数组更改为单独的字符串,php,arrays,pdo,Php,Arrays,Pdo,我有一个从sql返回的数组,我需要将它们放入单独的字符串中,以便在页面上使用。它位于数据库中的一行之外,列出了用户拥有的所有文件夹。 数据库中的示例john有一个红色文件夹、绿色文件夹和蓝色文件夹。 我运行查询并使用fetchAll返回john的文件夹。我有一个数组。我可以回显数组并输出redfoldergreenfolderbluefolder 如何获取数组并将其拆分为单独的字符串 PHP代码 $query = "SELECT album_name FROM albums WHERE us
$query = "SELECT album_name FROM albums WHERE username = :username";
$query_params = array(
':username' => $email
);
try {
$stmt = $db->prepare($query);
$result = $stmt->execute($query_params);
}
catch (PDOException $ex) {
echo 'Database Error, please try again.';
}
$rows = $stmt->fetchAll();
foreach ($rows as $row) {
$post = array();
$post["album_name"] = $row["album_name"];
echo $post["album_name"]; // This just lists all albums together no spaces or commas
}
$text = implode(",", $post);
echo $text; // This just outputs the last item (bluefolder)
尝试打印($post)代码>在最后一行。之所以只显示最后一个文件夹,是因为在循环开始时执行了“$post=array()”。每次都会重置阵列。。。只要把它从循环中拿出来,放在foreach上面就行了 :之所以只显示最后一个文件夹,是因为您在循环开始时执行了“$post=array()”。每次都会重置阵列。。。只要把它从循环中拿出来,放在foreach上面就行了 编辑: 试着这样做:
$rows = $stmt->fetchAll(PDO::FETCH_ASSOC);
$post = array();
foreach ($rows as $key => $folder) {
array_push($post, $folder)
}
$text = implode(",", $post);
以下情况需要更正:
foreach ($rows as $row) {
$post = array();
$post["album_name"] = $row["album_name"];
echo $post["album_name"]; // This just lists all albums together no spaces or commas
}
$text = implode(",", $post);
echo $text; // This just outputs the last item (bluefolder)
将上述内容更改为:
$post = array();
foreach( $rows as $row )
{
// $post = array(); // This line should not be here . It should be outside and above foreach
// The below echo is for test purpose . Comment it if you don't need it
echo $row["album_name"] ,' ';
// $post["album_name"] = $row["album_name"]; // This keeps assigning $row["album_name"] to same index "album_name" of $post . Eventually you will have only one value in $post
$post[] = $row["album_name"];
}
// $text = implode(",", $post); // With coma's as separator
$text = implode(" ", $post); // With blank's as separator
echo 'John has ' , $text;
请使用打印($text)在每一方,然后你将获得所有与commos的协议
从那里移除$post=arry并将其放在foreach的上方。
我正试图帮助你,这能帮上忙吗
谢谢
anand试试这个:
$post = array();
foreach ($rows as $row) {
array_push($post, 'album_name', $row["album_name"]);
}
$text = implode(",", $post);
echo $text;
无关联:
$post = array();
foreach ($rows as $row) {
$post[] = $row["album_name"];
}
$text = implode(",", $post);
echo $text;
echo$text。。这不是echo$post;?哇,真不敢相信我这么做了。已编辑的代码但现在echo$text仅输出数组中的最后一项(bluefolder)
echo$post
将抛出一个数组到字符串的转换
错误使用print\r($post)返回的数组([album\u name]=>bluefolder)我将print\r移动到foreach循环中,将上面的$post=array()移动,它现在输出数组([album\u name]=>redfolder)数组([album\u name]=>greenfolder)数组([album\u name]=>bluefolder)谢谢,我将$post=Array()移到了foreach循环上方,但仍然有相同的输出。仍然不起作用,但我相信这是其中很大一部分。谢谢好的,使用上面的代码似乎越来越近了,或者我就是不明白。。。。我的输出是redfolder greenfolder bluefolder redfolder,greenfolder,bluefolder它看起来像echo$行[“唱片集名称”],'';在项目和下面的内爆调用之间留出一个空格,并添加了逗号。这是我愚蠢的问题。如何使用这些字符串?用户John有$string1$string2和$string3,感谢您的帮助。请尝试更改$text=infrade(“,”,$post);echo$text
到$text=内爆(“,$post”);echo'John has',$text代码>将此标记为已接受答案。谢谢你的帮助。实际上,我需要在对另一个数据库的单独查询中使用每个字符串。我需要研究如何给他们打电话。最终需要执行$query=“从图片中选择照片,其中文件夹=:bluefolder”;没问题。要单独访问$post中的项目,您可以作为$post[0]
,$post[1]
等进行访问。例如,echo$post[0]代码>。