Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.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_Csv_Resultset_Array Column - Fatal编程技术网

Php 从对象数组的单个列创建逗号分隔的字符串

Php 从对象数组的单个列创建逗号分隔的字符串,php,arrays,csv,resultset,array-column,Php,Arrays,Csv,Resultset,Array Column,我使用foreach循环从数据库中回显一些值,如果有意义,我需要从最后一个循环中去掉最后一个逗号 我的循环很简单,如下所示 foreach($results as $result){ echo $result->name.','; } 呼应着 result,result,result,result, 我只需要去掉那个讨厌的最后一个逗号。首先使用输出缓冲获得所有输出。然后,修剪逗号并显示它。那么,这样做: $result_names = ''; foreach($results as

我使用foreach循环从数据库中回显一些值,如果有意义,我需要从最后一个循环中去掉最后一个逗号

我的循环很简单,如下所示

foreach($results as $result){
  echo $result->name.',';
}
呼应着

result,result,result,result,

我只需要去掉那个讨厌的最后一个逗号。

首先使用输出缓冲获得所有输出。然后,修剪逗号并显示它。那么,这样做:

$result_names = '';
foreach($results as $result){
    $result_names .= $result->name.',';
}
echo rtrim($result_names, ',');
ob_start();
foreach($results as $result)
{
   echo $result->name.',';
}
$output = ob_get_clean();

echo rtrim($output, ',');
如果内部循环非常大(OP只是为了简洁起见在这里发布),那么使用OB会更容易,而无需更改循环的内部结构。

更好:

$resultstr = array();
foreach ($results as $result) {
  $resultstr[] = $result->name;
}
echo implode(",",$resultstr);

我必须经常这样做,因为我总是试图将数字输入到jplot中,我发现在循环前面加逗号更容易,如下所示:

foreach($arrayitem as $k){ $string =  $string.",".$k;
 } 
然后用substr切掉第一个字符(逗号),如果你知道你的字符串的长度,这会很有帮助,我不确定substr最大字符的限制是什么

 echo substr($a,1,10000000);
希望这有帮助。

$arraySize=count($results);
$arraySize = count($results);
for($i=0; $i<$arraySize; $i++)
{
  $comma = ($i<$arraySize) ? ", " : "";
  echo $results[$i]->name.$comma;
}
对于($i=0;$i1.Concat到字符串,但在前面添加
2.仅当不是最后一项时才回显
|
3.加载到阵列,然后内爆 4.先切到字符串,然后最后切
(或
rtrim
it) 5.使用
array\u map()

不那么漂亮,但也很管用:

$first=true;
foreach($results as $result){
    if(!$first) { echo ', '; }
    $first=false;
    echo $result->name;
}

另一种智能方法是:

foreach($results as $result){
  echo ($passed ? ',' : '') . $result->name;
  $passed = true;
}

在这种情况下,在第一个循环中,
$passed
NULL
并且,
不会打印。

我最近也遇到了类似的问题。我通过使用增量变量$I将其初始化为0,然后在foreach循环中使其增量。在该循环中放置if、else和echo如果$i计数器小于数组/变量的sizeof()运算符,则包含逗号的语句

我不知道这是否能解决你的问题,但它帮助了我。我意识到这个问题已经有好几年了,但希望它能帮助其他人。我对PHP相当陌生,所以我不太理解之前给出的很多答案,尽管它们很有见地,特别是内爆答案

$i=0;
foreach ($results as $result) {
    $i++;
    if(sizeof($results) > $i) {
        echo $result . ", ";
    } else {
        echo $result;
    }
}

这是我通常做的,在项目之前而不是之后添加逗号,同时忽略第一个循环

$i = 0;
$string = '';

foreach($array as $item){
    $string .= ($i++ ? ',' : '').$item;
}

在现代PHP中,
array\u column()
将允许您在对象数组中隔离一列数据

代码:()

输出:

A,B,C

也就是说,由于您正在迭代一个结果集,因此调用
CONCAT()可能会更好
函数,这样这些值就已经加入到单值结果集中了。

我知道这是一个旧线程,但最近出现了这个线程,我想我应该使用next()分享我的另一种更干净的处理方法


这会杀死循环中的每个逗号,不是吗?…不仅仅是输出字符串末尾的那个逗号?我在意识到你从循环内部回音后编辑了这个片段。不需要OB,只需构建一个字符串,修剪然后回音。@BoltClock:是的,但是如果内部循环非常大(OP在这里发布只是为了简洁)如果没有数组的话,那么使用OB就更容易了。谢谢。如果数组没有数字索引,那是一个好主意。。请参阅上的常见问题解答。这仅省略了第一项中的逗号。问题是关于最后一项。使用数组映射的Concat字符串是最好的
echo implode('|', array_map(function($result) { return $result->name; }, $results));
$first=true;
foreach($results as $result){
    if(!$first) { echo ', '; }
    $first=false;
    echo $result->name;
}
<?php
$return = array(any array)
$len = count($return);
$str = '';
$i = 1;
foreach($return as $key=>$value)
{
    $str .= '<a href='.$value['cat_url'].'>'.$value['cat_title'].'</a>';
    if($len > $i)
    {
        $str .= ',';
        $i = $i+1;
    }
}
echo $str;
?>
foreach($results as $result){
  echo ($passed ? ',' : '') . $result->name;
  $passed = true;
}
$i=0;
foreach ($results as $result) {
    $i++;
    if(sizeof($results) > $i) {
        echo $result . ", ";
    } else {
        echo $result;
    }
}
<?php
$i = 1;
$count = count( $results );
foreach( $results as $result ) {
    echo $result->name;
    if ( $i < $count ) echo ", ";                               
    ++$i;
}
?>
$i = 0;
$string = '';

foreach($array as $item){
    $string .= ($i++ ? ',' : '').$item;
}
$results = [
    (object)['name' => 'A'],
    (object)['name' => 'B'],
    (object)['name' => 'C']
];

echo implode(',', array_column($results, 'name'));
A,B,C
$array = array("A thing", "A whatsit", "eighty flange oscillators");
          
foreach( $array as $value ){
    echo $value;
    $nxt = next($array);
    if($nxt) echo ", "; // commas between each item in the list
    else echo ". And that's it."; // no comma after the last item.
}

// outputs: 
// A thing, A whatsit, eighty flange oscillators. And that's it.