Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/68.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 拆分分隔文本并与另一个字段配对_Php_Mysql_Sql_Arrays_Opencart - Fatal编程技术网

Php 拆分分隔文本并与另一个字段配对

Php 拆分分隔文本并与另一个字段配对,php,mysql,sql,arrays,opencart,Php,Mysql,Sql,Arrays,Opencart,我希望这不是一个重复的问题,我发现了许多类似的问题,但没有一个符合我的要求。我试着用它来解决问题,但我想也许我问错了问题——我指定不想用php来解决这个问题。它也很接近,但再一次,这并不能完全定义它。我安装了它,看起来它将是一个强大的工具,但我不能得到它返回我希望的结果。我已经尝试与一起使用,但无法使用它获取同一数组中的所有数据。序言很长,但问题在于此。 我有一个DB和下表 id类别 10088 102| 88 | 243 | 442| 228 | 243 | 228 | 239 | 228 |

我希望这不是一个重复的问题,我发现了许多类似的问题,但没有一个符合我的要求。我试着用它来解决问题,但我想也许我问错了问题——我指定不想用php来解决这个问题。它也很接近,但再一次,这并不能完全定义它。我安装了它,看起来它将是一个强大的工具,但我不能得到它返回我希望的结果。我已经尝试与一起使用,但无法使用它获取同一数组中的所有数据。序言很长,但问题在于此。 我有一个DB和下表

id
类别

100
88

102
| 88 | 243 |

442
| 228 | 243 | 228 | 239 | 228 |

我正在重建它,把它放到OpenCart里

所以需要像这样或者在一个数组中,我可以用它来创建这个

ID
类别

100
88

102
88

102
243

442
228

442
243

442
228

我把它输入和输出数据库没有问题,只是修改数据,将ID与每个类别联系起来,不管字段中可能有多少。我花了大约2天的时间试图找到一个解决方案,我相信这是非常基本的。 我得到的最接近于
foreach

但最终得到了一个数组

array ('ID' => 442,
       'Category' => array (0 => 228, 1 => 243, 2 => 228 etc)

根据检索查询结果的方式,可以执行以下操作:

foreach($result as $row) { // iterate over each row in the query result

    $categories = array_filter(explode('|', $row['categories']));

    foreach($categories as $category) {
        // insert row into new table with id $row['id'] and category $category
    }
}

我使用selectid,categories FROM表将其作为数组调用。我需要了解数组的范围。。。php中的工具。我看了array_walk和array_map,但都没有完成我想要的工作。Thx。@TimP正常。如果您使用的是PDO,
$result
将只是
fetchAll()
返回的数组。我可以在每次迭代时将其输入数据库吗。?避免重新分配?我知道在生产环境中,这将是非常低效的。但这只是一次数据转换,这是对一条现已消失的评论的回应。您现在已经在代码中说明了我的意思-在每次迭代中插入行。@TimP很高兴我能提供帮助:)看起来您需要规范化数据。@Ben Fortune-您是指
ID422
中有
category 228
三次吗?我没有注意到,但这是来自数据库的实际数据-这增加了一个新问题。