【问题标题】:PHP PostgreSQL array to stringPHP PostgreSQL 数组到字符串
【发布时间】:2014-02-12 07:49:08
【问题描述】:

我在使用 PostgreSQL 获取和存储数据的 PHP 脚本中遇到问题。

目前我正在使用以下代码:

 $q = "SELECT id FROM playlisty WHERE id_profilu=1;";
 $r = pg_query($q);
 $arr = pg_fetch_all($r);
 echo '<pre>'; var_dump($arr); echo'</pre>';

以上代码sn -p生成的输出:

array(4) {
  [0]=>
  array(1) {
    ["id"]=>
    string(4) "2014"
  }
  [1]=>
  array(1) {
    ["id"]=>
    string(4) "1549"
  }
  [2]=>
  array(1) {
    ["id"]=>
    string(4) "1965"
  }
  [3]=>
  array(1) {
    ["id"]=>
    string(4) "2047"
  }
}

但是,我希望输出类似于以下内容:2014, 1549, 1965, 2047(即某些播放列表的id-s 的简单数组)。 我也尝试过使用 implode (to no anvil),并得到了Array,Array,Array,Array 作为回复。

【问题讨论】:

    标签: php sql arrays postgresql


    【解决方案1】:

    为什么不直接循环呢?

    $str=""; 
    foreach($yourarr as $arr) 
    { 
        $str.=implode(',',$arr).',';
    } 
    echo rtrim($str,','); //"prints" 2014, 1549, 1965, 2047
    

    【讨论】:

    • 当我循环它时,我可以在 "SELECT * FROM table WHERE id IN ($str)" 中使用它吗?
    • 我不知道该查询会返回什么结果...顺便问一下,您是否尝试过我给您的代码?
    • 是的,对我来说结果是“2014154919652047”——你可以看到没有逗号
    • $q = "从播放列表中选择 ID WHERE id_profilu=1 "; $r = pg_query($q); $yourarr = pg_fetch_all($r); $str=""; foreach($yourarr as $arr) { $str.=implode(',',$arr); } 回声 $str;
    【解决方案2】:

    在echo之前添加这一行:

    $arr = array_map(function ($v) { return $v['id']; }, $arr);
    

    如果要将结果输出为字符串,则必须使用 implode function。用这个替换最后一行:

    echo '<pre>'. implode(', ', $arr). '</pre>';
    

    【讨论】:

    • 它返回 "array(4) { [0]=> string(4) "2014" [1]=> string(4) "1549" [2]=> string(4) " 1965" [3]=> 字符串(4) "2047" }"
    • 如果你想将结果输出为字符串,你必须使用implode函数(php.net/manual/en/function.implode.php)而不是var_dump:echo '&lt;pre&gt;'; implode(', ', $arr); echo'&lt;/pre&gt;';
    【解决方案3】:

    试试这个:

    $array = array(
                0=>array('id'=>"2014"),
                1=>array('id'=>"2015"),
                2=>array('id'=>"2016"),
            );
            $ids = array_map(function($item) { return $item['id']; }, $array);
            $result = implode($ids,',');
            var_dump($result);
    

    输出:字符串'2014,2015,2016'(长度=14)

    【讨论】:

      【解决方案4】:

      这样选择:

      $q = "SELECT array_to_string(id, ',') AS id FROM playlisty WHERE id_profilu=1 ";
      

      【讨论】:

      • 我如何从中得到结果?
      • 像这样:$arr[0]['id'] 将返回 2014,2015,2016[,...]。您无需使用 php 内爆。
      猜你喜欢
      • 2011-11-21
      • 1970-01-01
      • 2016-01-09
      • 1970-01-01
      • 2014-12-11
      • 2017-04-15
      • 2013-07-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多