php 数组的遍历和替换问题
发布网友
发布时间:2022-04-05 23:23
我来回答
共3个回答
热心网友
时间:2022-04-06 00:53
1=> 'list_url' => '/vod-show-id-1-p-7.html',
这一句应该写错了吧,估计是
1=> array( 'list_url' => '/vod-show-id-1-p-7.html', ),
替换代码如下
foreach ( $arr as $k => $v ) {
if ( isset($v['list_url'] ) {
$str = str_replace(array('vod-show-id-','-p-','.html'),array('vodlist/','-','/'),$v['list_url']);
$arr[$k]['list_url'] = $str;
}
if ( isset($v['son']['list_url'] ) {
$str = str_replace(array('vod-show-id-','-p-','.html'),array('vodlist/','-','/'),$v['son']['list_url']);
$arr[$k]['son']['list_url'] = $str;
}
}
追问不能追问,我放到补充里面了,请回答! 谢谢了!
热心网友
时间:2022-04-06 02:11
<?php
$a = array(
0 => array (
'id' => '2',
'list_url' => '/vod-show-id-15.html',
),
1=> array(
'list_url' => '/vod-show-id-1-p-7.html',
),
2=> array (
'id' => '3',
'son' => array (
'list_url' => '/vod-show-id-25.html',
),
),
);
foreach($a as $k=>$v){
foreach($v as $key=>$val){
if($key == 'list_url'){
if(substr_count($val, '-p-') > 0){
$a[$k][$key] = str_ireplace('-p-', '-', str_ireplace('/vod-show-id-', '/vodlist/', $val));
}else{
$a[$k][$key] = str_ireplace('/vod-show-id-', '/vodlist/', $val);
}
}else if($key == 'son'){
if(substr_count('-p-', $val['list_url']) > 0){
$a[$k][$key]['list_url'] = str_ireplace('-p-', '-', str_ireplace('/vod-show-id-', '/vodlist/', $val['list_url']));
}else{
$a[$k][$key]['list_url'] = str_ireplace('/vod-show-id-', '/vodlist/', $val['list_url']);
}
}
}
}
print_r($a);
?>
追问不能追问,我放到补充里面了,请回答! 谢谢了!
热心网友
时间:2022-04-06 03:45
你用递归吧,随便写的,仅供参考
function traversal(&$b){
if(!is_array($b)){
return;
}
foreach ($b as $key=>&$val){
if ($key == 'list_url') {
// 自己根据需求写,这里的$val可能是个数组,看你的需求处理
}
traversal($val);
}
}
这个传进去$b,处理完后$b会变成最后结果,无需返回值
另外,你的问题逻辑混乱,你列举的2跟3有什么关系,麻烦关系说清楚