如何在PHP中利用指定字符串创建多维数组?
实现PHP多维数组的方案
没问题,我来帮你把这段字符串转换成规整的多维数组,直接上可运行的代码,再给你拆解关键步骤:
// 你的原始字符串(假设$vars已经正确获取) $vars = "Formaat : 60 cm | Kleur : century oak | Prijs: 45,00\\Formaat : 60 cm | Kleur : dark oak | Prijs: 45,00\\Formaat : 60 cm | Kleur : grey | Prijs: 45,00\\Formaat : 80 cm | Kleur : century oak | Prijs: 75,00\\Formaat : 80 cm | Kleur : dark oak | Prijs: 75,00\\Formaat : 80 cm | Kleur : grey | Prijs: 75,00"; // 按反斜杠拆分出每一条变体数据 $variabelebackslash = explode('\\', $vars); // 初始化用来存储最终多维数组的变量 $productVariants = []; // 遍历每一行变体数据 foreach ($variabelebackslash as $line) { // 跳过空行(避免拆分后产生的空元素干扰) if (trim($line) === '') { continue; } // 按|拆分当前行的各个属性(尺寸、颜色、价格) $attributeItems = explode('|', $line); $singleVariant = []; // 遍历每个属性,拆分键和值 foreach ($attributeItems as $item) { // 用explode的第三个参数限制拆分次数,防止值里出现冒号(虽然这里没有,但更健壮) list($key, $value) = array_map('trim', explode(':', $item, 2)); // 把整理好的键值对存入单个变体数组 $singleVariant[$key] = $value; } // 将单个变体数组加入最终的多维数组 $productVariants[] = $singleVariant; } // 打印结果查看(前端用<pre>标签格式化输出) echo '<pre>'; print_r($productVariants); echo '</pre>';
关键细节说明
- 跳过空行:因为原始字符串末尾可能带有反斜杠,拆分后会产生空元素,用
trim($line) === ''过滤掉,避免无效数据。 - 限制拆分次数:用
explode(':', $item, 2)确保只拆分键和值的部分,哪怕值里意外出现冒号也不会出错。 - 清理空格:
array_map('trim', ...)自动去掉键和值前后的多余空格,让数组结构更整洁。
运行这段代码后,你会得到一个结构清晰的多维数组,每个子数组对应一条产品变体的完整属性,比如:
Array ( [0] => Array ( [Formaat] => 60 cm [Kleur] => century oak [Prijs] => 45,00 ) [1] => Array ( [Formaat] => 60 cm [Kleur] => dark oak [Prijs] => 45,00 ) // 剩余变体数据以此类推 )
内容的提问来源于stack exchange,提问作者twan
相关产品推荐
相关产品推荐

