在php中将SQL独特数据转换为可读列表
我在Wordpress中有一些自定义表,用于存储与帖子相关的人的信息,我希望能够生成数据摘要,特别是一个句子,大致如下:在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
"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”。谢谢,我尝试了内爆,虽然它确实创建了一个逗号分隔的列表,并解决了最后一个逗号的问题,它没有加入最后的“和”。