Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/268.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在PHP中分解MySQL结果集_Php_Mysql_Arrays - Fatal编程技术网

在PHP中分解MySQL结果集

在PHP中分解MySQL结果集,php,mysql,arrays,Php,Mysql,Arrays,我需要从MySQL结果集中存储、检索和创建一个列表,其中一些项出现在多个位置,它还需要在列表末尾默认新项,因此最好不要使用单独的表来控制它 Product Position Prod1 1 3 Prod2 2 创建列表的步骤 Prod1Prod2Prod1 这似乎有些过分,但我找不到另一种可行的方法。如果我从一个MySQL结果集转换为一个数组,我如何将具有多个位置的项分解为表示我的列表的新数组项?您需要两个选项卡。第一个producs,带有id和名称 $data = array(

我需要从MySQL结果集中存储、检索和创建一个列表,其中一些项出现在多个位置,它还需要在列表末尾默认新项,因此最好不要使用单独的表来控制它

Product  Position
Prod1    1 3
Prod2    2
创建列表的步骤

  • Prod1
  • Prod2
  • Prod1

    • 这似乎有些过分,但我找不到另一种可行的方法。如果我从一个MySQL结果集转换为一个数组,我如何将具有多个位置的项分解为表示我的列表的新数组项?

      您需要两个选项卡。第一个
      producs
      ,带有id和名称

      $data = array(
          array('product' => 'prod 1', 'position' => '1 3'),
          array('product' => 'prod 2', 'position' => '2'),
      );
      
      $data_ordered = array();
      
      foreach ($data as $row) {
          foreach (explode(' ', $row['position']) as $subrow) {
              $data_ordered[$subrow] = $row['product'];
          }
      }
      
      ksort($data_ordered);
      
      var_dump($data_ordered);
      
      id name
      1  Prod1
      2  Prod2
      
      您还需要列表的顺序。也许像这样

      list
      id items
      1  1,2,1
      
      如果要打印id为1的列表。从数据库中获取项目并执行分解(',',$items)。现在获取每个项目id的名称。如果您没有很多产品,请立即获取所有产品并将其存储在阵列中,以便更快地访问

      更新

      这不是一个好的设计,但如果您希望将其放在一个表中:

      id name  lists
      1  Prod1 1:1,1:3
      2  Prod2 1:2
      

      其中列表包含
      list\u id:position、[list\u id:position],…
      。但要查看列表,您必须获取所有产品并检查其是否在列表1中。用position=>product\u行创建一个数组,这样您就可以使用
      ksort()

      每个position只有一个产品?此外,是否有更多的位置在一行中以空格分隔?格式灵活,每个位置一个项目,但有些项目在多个子类别中,用户可以独立定义每个列表项目和子列表项目的顺序(拖放重新排序)但它没有说明的是,当添加Prod3时,它将不会出现在菜单上。旧系统手动控制菜单,因此项目必须在CMS中专门添加到菜单中,我想使其自动化,因此尝试将其保留在产品表中。最重要的是,一个产品可以分为多个子类别,并且每个项目的顺序都可以更改(例如,它不是字母顺序)向下投票?世界跆拳道联盟?有人真的知道如何阻止人们帮忙。今天结束stackoverflow…它不是一个单一级别的列表,而是一个产品可以出现多次的子类别,因此您不能将其添加到末尾。不过,这给了我一些思考的东西,类似的方法,但使用多行,每个子类别有一行。不是我投了反对票。这可能是因为你提供了另一种方法,但我对此持开放态度,试图回答问题而不仅仅是具体问题同样有效