【问题标题】:building a multidimensional array from mysql with php用php从mysql构建一个多维数组
【发布时间】:2011-07-17 19:45:00
【问题描述】:

我正在尝试从 mysql 结果集中形成一个特定的多维数组。

我希望它看起来像这样:

array(
'product_name' => 'prod_1',
'categories' => array(1,2,3,4)
);

db 结果返回一个看起来像这样的数组

Array
(
[0] => Array
    (
        [id] => 1
        [product_name] => prod_1
    )

[1] => Array
    (
        [id] => 2
        [product_name] => prod_1
    )

[2] => Array
    (
        [id] => 3
        [product_name] => prod_1
    )

[3] => Array
    (
        [id] => 4
        [product_name] => prod_1
    )

如您所见,我想将产品名称分组并将 id 放入另一个数组中

有人对如何做到这一点有任何提示吗?

【问题讨论】:

  • 其实分类是从哪里来的?你想要一个数组中的所有 id 和另一个数组中的所有产品名称吗?
  • 我的查询:SELECT id, product_name FROM parts 非常简单,我希望第一个维度包含分组的产品名称,第二个维度包含与其关联的所有 ID

标签: php mysql multidimensional-array


【解决方案1】:
$yourarray = array(array('id'=>1, 'product_name' => 'prod_1'), array('id'=>2, 'product_name' => 'prod_2'),array('id'=>3, 'product_name' => 'prod_3'));
$multiarray = array();

for($i=0; $i<count($yourarray);$i++){
    $multiarray['product_name'][] = $yourarray[$i]['product_name'];
    $multiarray['product_id'][] = $yourarray[$i]['id'];
}

print_r($yourarray); //original array
print_r($multiarray); //gives you multi array

类似的东西?

你的原始数组:

Array
(
    [0] => Array
        (
            [id] => 1
            [product_name] => prod_1
        )

    [1] => Array
        (
            [id] => 2
            [product_name] => prod_2
        )

    [2] => Array
        (
            [id] => 3
            [product_name] => prod_3
        )

)

结果会打印出来:

Array
(
    [product_name] => Array
        (
            [0] => prod_1
            [1] => prod_2
            [2] => prod_3
        )

    [product_id] => Array
        (
            [0] => 1
            [1] => 2
            [2] => 3
        )
)

【讨论】:

    【解决方案2】:

    您尝试过 GROUP_CONCAT。是这样的:

    SELECT name, GROUP_CONCAT(name) AS friends FROM friendships GROUP BY name;
    

    在这里查看详细信息:http://forums.mysql.com/read.php?10,287931,287936#msg-287936

    【讨论】:

      【解决方案3】:
      $yourarray = array(array('id'=>1, 'product_name' => 'prod_1'), array('id'=>2, 'product_name' => 'prod_1'), array('id'=>3, 'product_name' => 'prod_1'),array('id'=>4, 'product_name' => 'prod_1'));
      
      $multiarray = array();
      foreach ($yourarray as $value) {
          if(!isset($multiarray['product_name'])) {
              $multiarray['product_name'] = $value['product_name'];
          }    
          $multiarray['categories'][] = $value['id'];
      }
      print_r($multiarray);
      

      【讨论】:

      • 这相当接近,但输出的是 1 个产品的所有类别 ID,而不是仅与该产品相关的 ID
      • 您的阵列只有 1 个名为 prod_1 的产品,您可以添加 prod_2,prod_3,... 并编写您需要的所需阵列吗?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-05-30
      • 2012-09-02
      • 1970-01-01
      • 2012-12-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多