Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/236.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将PHP数组更改为单独的字符串_Php_Arrays_Pdo - Fatal编程技术网

将PHP数组更改为单独的字符串

将PHP数组更改为单独的字符串,php,arrays,pdo,Php,Arrays,Pdo,我有一个从sql返回的数组,我需要将它们放入单独的字符串中,以便在页面上使用。它位于数据库中的一行之外,列出了用户拥有的所有文件夹。 数据库中的示例john有一个红色文件夹、绿色文件夹和蓝色文件夹。 我运行查询并使用fetchAll返回john的文件夹。我有一个数组。我可以回显数组并输出redfoldergreenfolderbluefolder 如何获取数组并将其拆分为单独的字符串 PHP代码 $query = "SELECT album_name FROM albums WHERE us

我有一个从sql返回的数组,我需要将它们放入单独的字符串中,以便在页面上使用。它位于数据库中的一行之外,列出了用户拥有的所有文件夹。 数据库中的示例john有一个红色文件夹、绿色文件夹和蓝色文件夹。 我运行查询并使用fetchAll返回john的文件夹。我有一个数组。我可以回显数组并输出redfoldergreenfolderbluefolder

如何获取数组并将其拆分为单独的字符串

PHP代码

  $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]