gpt4 book ai didi

php - 来自同一数据库列的 MySQL 查询和数组输出

转载 作者:行者123 更新时间:2023-11-30 00:05:42 24 4
gpt4 key购买 nike

我对 PHP 和 MySql 还很陌生,我不确定这是否可以通过 SQL 或 PHP 来实现。

我有以下查询:

SELECT wp_posts.ID,
wp_postmeta.meta_value
FROM wp_posts
INNER JOIN wp_postmeta
ON wp_posts.ID = wp_postmeta.post_id
WHERE wp_posts.post_type = 'cooney_properties'
AND wp_posts.post_status = 'publish'
AND (wp_postmeta.meta_key = 'longitude' OR wp_postmeta.meta_key = 'latitude')

这是来 self 的 Wordpress 数据库,您可以看到经度和纬度值位于同一列“meta_key”下。

上面查询的数组给出了与下面类似的结果(不准确,只是粗略的示例):

Array
(
[0] => stdClass Object
(
[ID] => 25016273
[meta_value] => 51.01454
)
[1] => stdClass Object
(
[ID] => 24617570
[meta_value] => 51.01447
)
[2] => stdClass Object
(
[ID] => 24780750
[meta_value] => 51.01535
)

------------------- (later on items with same ID) -------------

[141] => stdClass Object
(
[ID] => 24617570
[meta_value] => -3.107139
)
[142] => stdClass Object
(
[ID] => 24780750
[meta_value] => -3.096807
)
[143] => stdClass Object
(
[ID] => 24764956
[meta_value] => -3.104187
)
)

来自数据库的同一列,我不知道是否可以在我的查询中修复或者是否是 PHP 修复,我需要具有相同 ID 的项目位于同一数组中,并且可能需要重命名键,如果可能的话,如下所示:

 Array
(
[0] => stdClass Object
(
[ID] => 25016273
[longitude] => 51.01454
[latitude] => -3.107139
)
[1] => stdClass Object
(
[ID] => 24617570
[longitude] => 51.01447
[latitude] => -3.096807
)
[2] => stdClass Object
(
[ID] => 24780750
[longitude] => 51.01535
[latitude] => -3.104187
)
)

最佳答案

您也可以更改 sql 以获取 meta_key 字段:

SELECT wp_posts.ID,
wp_postmeta.meta_value,
wp_postmeta.meta_key
FROM wp_posts
INNER JOIN wp_postmeta
ON wp_posts.ID = wp_postmeta.post_id
WHERE wp_posts.post_type = 'cooney_properties'
AND wp_posts.post_status = 'publish'
AND (wp_postmeta.meta_key = 'longitude' OR wp_postmeta.meta_key = 'latitude')

然后您可以迭代返回的数组,并使用 ID 值作为索引填充一个新数组。您可以使用 isset() 检查新数组中是否存在具有当前 id 的项目。如果是这样,请添加到它(例如添加纬度值),否则创建该项目:

$new=array();

foreach($result as $item){

if(isset($new[$item->ID])){

$new[$item->ID][$item->meta_key] = $item->meta_value;

}else{

$new[$item->ID] = array('ID' => $item->ID, $item->meta_key => $item->meta_value);
}
}
print_r($new);

关于php - 来自同一数据库列的 MySQL 查询和数组输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24576514/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com