【发布时间】:2017-09-01 05:27:36
【问题描述】:
我正在为应该扩展插件的 WordPress 插件编写脚本。现在我正在优化我的脚本。但我的问题是处理数据......数据由插件应用。所以我不能改变任何东西。我必须处理它。
在这里你可以看到数据库的一个sn-p。但是我选择了product_shop_0/1/2/3数量相同的不同帖子只是幸运......它是可变的!
最后我希望有一个这样的数组:
array(92) {
[0]=> int(5) "24202"
array(4) {
["product_shops_0"]=>
array(4) {
["product_shops_0_price"]=> double(4) "35.99"
["product_shops_0_price_old"]=> double(0) ""
["product_shops_0_shop"]=> int(5) "18319"
["product_shops_0_link"]=> string(78) "http://www.kinguin...."
}
["product_shops_1"]=>
array(4) {
...
}
["product_shops_2"]=>
array(4) {
...
}
["product_shops_3"]=>
array(4) {
["product_shops_3_price"]=> double(4) "40.39"
["product_shops_3_price_old"]=> double(0) ""
["product_shops_3_shop"]=> int(5) "18315"
["product_shops_3_link"]=> string(78) "http://www.gameladen...."
}
}
我目前的问题是我不知道如何解决这个问题。 product_shops_0_price. **EVERY**post_idhas it's ownproduct_shops_0_price`。所以,它又从 0 开始。这些数据属于一起:
- 所有
meta_keys和meta_values具有相同的`post_id` - 这些数据应该在
product_shops_0、product_shops_1等上拆分...
有谁知道我怎样才能像这样堆叠那个数组? 我已经试过了,但我无法解决它......
这是我的尝试:
$stmt = $database->query("SELECT `meta_key`, `meta_value` FROM `fWR6qIN_postmeta` WHERE (meta_key like '$price_meta' OR meta_key like '$price_old_meta' OR meta_key like '$link_meta' OR meta_key like '$shop_meta')");
$map = array();
while($row = $stmt->fetch_assoc()){
$price = null;
$price_old = null;
$link = "";
$shop = "";
if($row["meta_key"] == $price_meta){
$price = $row["meta_value"];
}elseif($row["meta_key"] == $price_old_meta){
$price_old = $row["meta_value"];
}elseif($row["meta_key"] == $link_meta){
$link = $row["meta_value"];
}elseif($row["meta_key"] == $shop_meta) {
$shop = $row["meta_value"];
}else{
echo "Error\n";
}
$tmp = array(
$price_meta => $price,
$price_old_meta => $price_old,
$link_meta => $link,
$shop_meta => $shop
);
array_push($map, $tmp);
}
很高兴得到帮助! 谢谢和问候!
【问题讨论】:
-
您使用的是
mysqli还是PDO? -
计数是有限的还是无限的?即
product_shops_0..product_shops_2...product_shops_nn 是已知的还是未知的? -
我使用的是
MySQL,每个post_id的计数都是可变的且未知的
标签: php sql arrays wordpress sorting