出一道题,第一个答对的,送100分

craboy1 2010-07-22 11:51:23
我发的一个贴子:
http://topic.csdn.net/u/20100722/10/ae144d10-d5b7-412a-af49-60596ad4e09f.html?36304
现在需要实现这个功能:
将数组:
$test_arr = array(
"c" => "",
"a" => "test_a",
"b" => array("g"=>"test_g"),
);

转化成这样的字符串:
<c/>
<a>test_a</a>
<b>
<g>test_g</g>
</b>
说实话,几个小时,一点头绪也没有!我发现php递归函数中出现foreach总会出现无法实现的问题!
...全文
68 点赞 收藏 8
写回复
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
床上等您 2010-07-22
[Quote=引用 3 楼 cunningboy 的回复:]

PHP code
<?php
$test_arr = array(
"c" => "",
"a" => "test_a",
"b" => array("g"=>"test_g"),
);
$HTML = "";
function convert($array){
global $HTML;
foreach($array as $k……
[/Quote]
这个豸像可以,用了递归。
回复
amani11 2010-07-22
如果需要写入文件,可以用PHP_EOL来换行
回复
CunningBoy 2010-07-22
<?php
$test_arr = array(
"c" => "",
"a" => "test_a",
"b" => array("g"=>"test_g"),
);
$HTML = "";
function convert($array){
global $HTML;
foreach($array as $key => $value){
if(empty($value)){
$HTML .= "</".$key."><br>";
}else{
if(is_array($value)){
convert($value);
}else{
$HTML .= "<".$key.">".$value."</".$key."><br>";
}
}
}
}
convert($test_arr);
echo $HTML;
?>
回复
diannaomingong 2010-07-22
楼主是不是想利用php数组来生成html标签?
我有过这个想法. 因为在html标签里嵌入各种代码作为模板, 是不能复用的. 如果是数组型模板,修改,传递,复用就爽得不得了了.

而且试验成功了一半~

现给出部分代码供参考:


function array_iterator($array){
foreach($array as $key=>$val) {

$key="div id=\"$key\"";
$this->div.="<$key>";
$this->div.=is_array($val)?$this->array_iterator($val):$val;
list($key,)=explode(' ',$key);
$this->div.="</$key>";
}
}

这个只是生成div的,递归原理和基本算法如此. 其他的太复杂不发了




回复
itian 2010-07-22

$test_arr = array(
"c" => "",
"a" => "test_a",
"b" => array("g"=>"test_g"),
);

function parse($array){
$str = '';
foreach($array as $key => $val){
if($val == ''){
$str .= "<".$key."/>";
}
else if(!is_array($val)){
$str .= "<".$key.">".$val."</".$key.">";
}
else{
$str .= "<".$key.">".parse($val)."</".$key.">";
}
}
return $str;
}

echo parse($test_arr);

回复
craboy1 2010-07-22
南迁的候鸟!对不起了!分都给没有靠背的椅了!说好了给第一个加答出问题的人!见谅!
回复
CunningBoy 2010-07-22
[Quote=引用 6 楼 craboy1 的回复:]
非常感谢所有回帖的朋友!
真是惭愧呀!出去吃饭的功夫就有人做出来了!
parse那个函数是可以的,convert好像少了一个<b>。
[/Quote]
修改了一下:
<?php
$test_arr = array(
"c" => "",
"a" => "test_a",
"b" => array("g"=>"test_g"),
);
$HTML = "";
function convert($array){
foreach($array as $key => $value){
if(empty($value)){
$HTML .= "</".$key."><br>";
}else{
if(is_array($value)){
$HTML .= "<".$key.">".convert($value)."</".$key."><br>";
}else{
$HTML .= "<".$key.">".$value."</".$key."><br>";
}
}
}
return $HTML;
}
echo convert($test_arr);
?>
回复
craboy1 2010-07-22
非常感谢所有回帖的朋友!
真是惭愧呀!出去吃饭的功夫就有人做出来了!
parse那个函数是可以的,convert好像少了一个<b>。
回复
发动态
发帖子
基础编程
创建于2007-09-28

2.1w+

社区成员

从PHP安装配置,PHP入门,PHP基础到PHP应用
申请成为版主
社区公告
暂无公告