PHP将含冒号空格分隔元素的索引数组转为关联数组
解决方案
核心思路
跳过数组首尾的无效OK行,将剩余key: value格式的元素按冒号加空格分割一次的规则提取键和值,直接构建一维关联数组。
实现代码
// 初始化空的关联数组 $newStat = []; foreach ($stat as $item) { $item = trim($item); // 跳过首尾的OK行(无效数据) if ($item === 'OK' || str_starts_with($item, 'OK MPD')) { continue; } // 只分割一次,保留值中的冒号(比如time、audio字段) list($key, $value) = explode(': ', $item, 2); // 给关联数组赋值 $newStat[$key] = $value; }
代码说明
explode(': ', $item, 2):第三个参数2限制仅分割一次,避免像time: 14992:0这类值含冒号的元素被错误拆分,保证值的完整性。- 跳过无效行:过滤掉数组首尾的
OK MPD 0.23.5和OK,避免无效键值对混入结果。 - 直接构建一维数组:每次循环将提取的键值对存入
$newStat,最终得到结构清晰的一维关联数组,不会出现多维数组问题。
最终数组结构示例
Array ( [repeat] => 0 [random] => 0 [single] => 0 [consume] => 1 [partition] => default [playlist] => 11292 [playlistlength] => 1 [mixrampdb] => 0 [state] => play [song] => 0 [songid] => 3 [time] => 14992:0 [elapsed] => 14992.067 [bitrate] => 48 [audio] => 44100:16:2 )
内容的提问来源于stack exchange,提问作者Tony
相关产品推荐
相关产品推荐

