如何在PHP中生成嵌套关联数组?

如何在PHP中生成嵌套关联数组?,php,arrays,string,associative-array,explode,Php,Arrays,String,Associative Array,Explode,我问了一个问题,非常感谢他对其中SQL部分的完整回答 问题 我有一个sql表(主键为[ip&id]),如下所示: ip | id | visits product_rating_for_ip = array( ip=>array( id=>rating, id=>rating, ... ), ip=>array( id=>rating, id=>rating, ... ), . . . ); 我想从该表生成一个p

我问了一个问题,非常感谢他对其中SQL部分的完整回答

问题 我有一个sql表(主键为[ip&id]),如下所示:

ip | id | visits
product_rating_for_ip = array(
  ip=>array(
    id=>rating, id=>rating, ...
  ),
  ip=>array(
    id=>rating, id=>rating, ...
  ),
  .
  .
  .
);
我想从该表生成一个php数组,如下所示:

ip | id | visits
product_rating_for_ip = array(
  ip=>array(
    id=>rating, id=>rating, ...
  ),
  ip=>array(
    id=>rating, id=>rating, ...
  ),
  .
  .
  .
);
例如:

product_rating_for_ip = array(
  "78.125.15.92"=>array(
    1=>0.8,2=>0.2,3=>1.0
  ),
  "163.56.75.112"=>array(
    1=>0.1,2=>0.3,3=>0.5,8=>0.1,12=>1.0
  ),
  .
  .
  .
);
Gordon Linoff建议使用此SQL查询,该查询工作正常:

SQL查询 这就产生了:

+-------------+--------------------------+
|ip           |ratings                   |
+-------------+--------------------------+
|154.18.72.15 |2:0.1667,1:1.0000,3:0.1667|  
|162.16.18.22 |1:1.0000,3:0.3750,2:0.1250|  
|142.128.1.14 |2:1.0000,1:0.2500,3:0.5000|  
|78.15.92.131 |1:0.1429,3:1.0000,2:0.2857|  
+-------------+--------------------------+    
问题摘要 如何将此结果集放入此PHP数组中

    product_rating_for_ip = array(
      ip=>array(
        id=>rating, id=>rating, ...
      ),
      ip=>array(
        id=>rating, id=>rating, ...
      ),
      .
      .
      .
    );
我有问题的答案 我认为我应该这样做(可能不正确或效率低下):


它不是复制品。由于SQL部分有一个答案,我接受了它,没有人会来帮助php部分。因此,我提出了第二个问题,集中讨论php part.Hrm,即“每个问题一个可接受的答案”问题。看到同一个问题贴了两次还是很烦人的,尽管如果可以的话我会撤销我的标志。如有必要,我将接受无效标志@Nate我从第一个问题中删除了php部分。现在可以了吗?@内特,请考虑修改你对这个问题的修改,如果可能的话,我处理了与先前问题的冲突。谢谢:)遗憾的是,撤销一个标志是不可能的,但我确实删除了“这是重复的”评论。不管是谁来主持会议,都很可能看到这些评论,而不去理会你的帖子。很抱歉,我也很高兴看到这个。谢谢,但我认为它和我自己的代码是一样的。它将数组输出为
ip=>array(“id:value”,“id:value”,…)
但是我想要的是
ip=>array(id=>value,id=>value,…)
它有一个小问题
id
s是产品id,例如1、2、8,但此代码返回0、1、2,这应该已经修复了它。
mysqli_stmt_execute($stmt);
mysqli_stmt_bind_result($stmt,$ip,$ratings);
$product_rating_for_ip = array();
while (mysqli_stmt_fetch($stmt)){
    $value_array = explode(",",$ratings);
    foreach ($value_array as $key => $value){
        $parts = explode(':', $value);
        $product_rating_for_ip[$ip][$parts[0]] = $parts[1];
    }
}