替换大型多维数组中的文本

时间:2016-03-22 作者:Hady Shaltout

我有一个巨大的多维数组,没有办法实现它:),无论如何,我想替换所有http 如果客户将其网站转换为https 他不会为新url更改所有旧图像。

我试过了array_map, array_walk 当然还有str_replace 但我发现我必须为每个嵌套数组生成无限foreach。

Array (

[Repeater_1] => Array (

        [1] => Array (
                [user_defined_field_1] => http://Value_1
                [user_defined_field_2] => http://Value_2
            )

        [2] => Array (
                [user_defined_field_1] => http://Value_1
                [user_defined_field_2] => http://Value_2
            )

    )

[Repeater_2] => Array (

        [1] => Array (
                [user_defined_field_3] => http://Value_1
                [user_defined_field_4] => http://Value_2
            )

        [2] => Array (
                [user_defined_field_3] => http://Value_1
                [user_defined_field_4] => http://Value_2
            )
    )
)

1 个回复
最合适的回答,由SO网友:nonsensecreativity 整理而成

试试这个php内置函数array_walk_recursive

function wpse_do_something_on_data() {
   $data = array(
        \'repeater-1\' => array(
            array(
                \'user_defined_field1\' => \'http://www.domain-001.com\',
                \'user_defined_field2\' => \'http://www.domain-002.com\',
            ),

            array(
                \'user_defined_field1\' => \'http://www.domain-011.com\',
                \'user_defined_field2\' => \'http://www.domain-012.com\',
            ),
        ),

        \'repeater-2\' => array(
            array(
                \'user_defined_field1\' => \'http://www.domain-101.com\',
                \'user_defined_field2\' => \'http://www.domain-102.com\',
            ),

            array(
                \'user_defined_field1\' => \'http://www.domain-111.com\',
                \'user_defined_field2\' => \'http://www.domain-112.com\',
            ),
        ),
    );

   array_walk_recursive( $data, \'wpse_callback\' );

   return $data;
}

function wpse_callback( &$value, $key ) {
   $value = str_replace( \'http://\', \'keyword\', $value );
}

$my_data = wpse_do_something_on_data();

var_dump( $my_data ); 

相关推荐

Foreach循环内的if/ellif in_array仅显示一个POST的问题

如果某个类别的帖子对应一个类别,我会尝试为每个帖子指定一个特定的背景色。我的函数可以工作,但仅限于在结果中显示一篇文章。如果我删除此功能,将显示所有帖子。更多信息:在我的页面上,我有按类别筛选帖子的按钮。如果单击一次,我将显示该类别的所有帖子。但每个帖子都包含几个类别。我选择了一些类别来为每个帖子设置背景色,但这些类别与过滤器按钮不同。Wordpress显示此错误;您的站点出现严重错误,请了解有关调试WordPress的详细信息"E;在显示第一个帖子之后。以下是我的全部代码:<?php&#x