gpt4 book ai didi

php - 解析包含 3 个分隔符的格式化字符串以创建多个平面数组

转载 作者:行者123 更新时间:2023-12-04 07:43:15 25 4
gpt4 key购买 nike

我有以下格式的字符串:

$strings[1] = cat:others;id:4,9,13
$strings[2] = id:4,9,13;cat:electric-products
$strings[3] = id:4,9,13;cat:foods;
$strings[4] = cat:drinks,foods;
哪里 cat表示类别和 id是产品的标识号。
我想拆分这些字符串并转换为数组 $cats = array('others');$ids = array('4','9','13');我知道它可以通过多个步骤通过foreach和explode函数来完成。我想我在附近的某个地方,但以下代码不起作用。
另外,我想知道是否可以通过 preg_match 来完成或 preg_split步骤更少。或任何其他更简单的方法。
foreach ($strings as $key=>$string) {
$temps = explode(';', $string);
foreach($temps as $temp) {
$tempnest = explode(':', $temp);
$array[$tempnest[0]] .= explode(',', $tempnest[1]);
}
}
我想要的结果应该是:
$cats = ['others', 'electric-products', 'foods', 'drinks';
$ids = ['4','9','13'];

最佳答案

一种选择是对 cat 爆炸后的第一项进行字符串比较。和 id将值设置为正确的数组。

$strings = ["cat:others;id:4,9,13", "id:4,9,13;cat:electric-products", "id:4,9,13;cat:foods", "cat:drinks,foods"];

foreach ($strings as $key=>$string) {
$temps = explode(';', $string);
$cats = [];
$ids = [];
foreach ($temps as $temp) {
$tempnest = explode(':', $temp);

if ($tempnest[0] === "cat") {
$cats = explode(',', $tempnest[1]);
}
if ($tempnest[0] === "id") {
$ids = explode(',', $tempnest[1]);
}
}
print_r($cats);
print_r($ids);
}
Php demo
例如,第一项的输出看起来像
Array
(
[0] => others
)
Array
(
[0] => 4
[1] => 9
[2] => 13
)

如果要聚合 2 个数组中的所有值,可以将结果进行 array_merge,最后使用 array_unique 获取唯一值。
$strings = ["cat:others;id:4,9,13", "id:4,9,13;cat:electric-products", "id:4,9,13;cat:foods", "cat:drinks,foods"];
$cats = [];
$ids = [];
foreach ($strings as $key=>$string) {
$temps = explode(';', $string);

foreach ($temps as $temp) {
$tempnest = explode(':', $temp);

if ($tempnest[0] === "cat") {
$cats = array_merge(explode(',', $tempnest[1]), $cats);
}
if ($tempnest[0] === "id") {
$ids = array_merge(explode(',', $tempnest[1]), $ids);
}
}

}
print_r(array_unique($cats));
print_r(array_unique($ids));
输出
Array
(
[0] => drinks
[1] => foods
[3] => electric-products
[4] => others
)
Array
(
[0] => 4
[1] => 9
[2] => 13
)
Php demo

关于php - 解析包含 3 个分隔符的格式化字符串以创建多个平面数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67337633/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com