通过多个定界符将字符串分解为多维数组php [英] Explode string by multiple delimiters into multi-dimensional array php

查看:93
本文介绍了通过多个定界符将字符串分解为多维数组php的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

有人可以帮我递归这个爆炸函数吗?我今天不工作.

Can someone please give me a hand making this explode function recursive? My head is not working today.

function expl($str,$charlist='|'){
    $charlist = str_split($charlist);
    foreach($charlist as $char){
        if(is_array($str)){
            for($i=0; $i<sizeof($str); $i++){
                $str[$i] = expl($str[$i],$char);
            }
        }else{
            return (explode($char,trim($str,$char)));
        }
    }
    return($str);
}
echo "<pre>";
print_r(expl("A~a1~a2|B~b1~b2",'|~'));
echo "</pre>";

应输出:

Array
(
[0] => Array
    (
        [0] => A
        [1] => a1
        [2] => a2
    )
[0] => Array
    (
        [0] => B
        [1] => b1
        [2] => b2
    )
)

推荐答案

<?php
function expl($str,$charlist='|'){
if(!$charlist) return($str);
$char = $charlist[0];
$matrix = explode($char,$str);
for($i=0; $i<sizeof($matrix); $i++){
    $matrix[$i] = expl($matrix[$i],substr($charlist,1));
}
return($matrix);
}
echo "<pre>";
print_r(expl("A~a1~a2|B~b1~b2",'|~'));
echo "</pre>";
?>

那将是这样的...使用递归!冷杉的水平将得到第一个矩阵,做这样的事情$ matrix [0] ="A〜a1〜a2";$ matrix [1] ="B〜b1〜b2";然后,递归将完成第二部分,这将使每个字符串成为字符串数组,将成为字符串数组,直到没有更多的分隔符=)

that would be something like this... use recursion! the firs level will get the first matrix, doing something like this $matrix[0] = "A~a1~a2"; $matrix[1] = "B~b1~b2"; and then, the recursion will do the second part, that will make each string become the array of strings, that will become the array of strings, until there's no more separators =)

这篇关于通过多个定界符将字符串分解为多维数组php的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆