在php中将SQL独特数据转换为可读列表

在php中将SQL独特数据转换为可读列表,php,wordpress,Php,Wordpress,我在Wordpress中有一些自定义表,用于存储与帖子相关的人的信息,我希望能够生成数据摘要,特别是一个句子,大致如下: "This post mentions 4 surnames: Brown, Jones, Robinson and Smith" 我目前提取的数据如下: $surnames = $wpdb->get_results(" SELECT distinct lastname FROM ".$wpdb->prefix."people WHERE pos

我在Wordpress中有一些自定义表,用于存储与帖子相关的人的信息,我希望能够生成数据摘要,特别是一个句子,大致如下:

"This post mentions 4 surnames: Brown, Jones, Robinson and Smith"
我目前提取的数据如下:

$surnames = $wpdb->get_results("
  SELECT distinct lastname 
  FROM ".$wpdb->prefix."people 
  WHERE post_id='$post_id' 
  ORDER BY lastname asc");
Array ( 
  [0] => stdClass Object ([lastname] => Brown ) 
  [1] => stdClass Object ( [lastname] => Jones ) 
  [2] => stdClass Object ( [lastname] => Robinson ) 
  [3] => stdClass Object ( [lastname] => Smith ) 
)
它返回一个对象数组,如下所示:

$surnames = $wpdb->get_results("
  SELECT distinct lastname 
  FROM ".$wpdb->prefix."people 
  WHERE post_id='$post_id' 
  ORDER BY lastname asc");
Array ( 
  [0] => stdClass Object ([lastname] => Brown ) 
  [1] => stdClass Object ( [lastname] => Jones ) 
  [2] => stdClass Object ( [lastname] => Robinson ) 
  [3] => stdClass Object ( [lastname] => Smith ) 
)
所以目前,我只是这样做:

foreach ($surnames as $surname) {$summary .= $surname->lastname.', ';}
返回:

Brown, Jones, Robinson, Smith, 
这显然是不可接受的

有没有标准的php函数可以做到这一点,并且可以在对象数组上工作?我想这是一个常见的问题,如果可能的话,我会尽量避免重新发明轮子。

内爆($separator,$array)观察。

但这仅适用于阵列,因此您可能需要进行一次演练。

使用
内爆($separator,$array)进行观察。


但这仅适用于数组,因此您可能需要进行一次演练。

如果您将数据作为数组而不是对象从数据库中返回,则可以使用PHP 5.5的新array_column()函数:

$summary = implode(
    ', ',
    array_column(
        $surnames,
        'lastname'
    )
);
修改对的查询调用

$surnames = $wpdb->get_results("
  SELECT distinct lastname 
  FROM ".$wpdb->prefix."people 
  WHERE post_id='$post_id' 
  ORDER BY lastname asc",
  ARRAY_A
);
将允许您为每个记录返回关联数组而不是对象

您可以使用以下内容:

function str_lreplace($search, $replace, $subject) {
    $pos = strrpos($subject, $search);
    if($pos !== false) {
        $subject = substr_replace($subject, $replace, $pos, strlen($search));
    }

    return $subject;
}

要将最后一个
替换为

,如果要将数据库中的数据作为数组而不是对象返回,可以使用PHP 5.5新的array_column()函数:

$summary = implode(
    ', ',
    array_column(
        $surnames,
        'lastname'
    )
);
修改对的查询调用

$surnames = $wpdb->get_results("
  SELECT distinct lastname 
  FROM ".$wpdb->prefix."people 
  WHERE post_id='$post_id' 
  ORDER BY lastname asc",
  ARRAY_A
);
将允许您为每个记录返回关联数组而不是对象

您可以使用以下内容:

function str_lreplace($search, $replace, $subject) {
    $pos = strrpos($subject, $search);
    if($pos !== false) {
        $subject = substr_replace($subject, $replace, $pos, strlen($search));
    }

    return $subject;
}

为了将最后一个
替换为

谢谢,我尝试了内爆,虽然它确实创建了一个逗号分隔的列表,解决了最后一个逗号的问题,但它没有添加到最后的“and”。谢谢,我尝试了内爆,虽然它确实创建了一个逗号分隔的列表,并解决了最后一个逗号的问题,它没有加入最后的“和”。