微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

替换 PHP 数组中包含单词的所有字符串

如何解决替换 PHP 数组中包含单词的所有字符串

我正在尝试将所有包含 http://api.example.com/data/https://example.com/data/ 的 URL 在使用 Fat-Free 框架时从数据库的数组中,下面尝试的代码 iv 给了我

内部服务器错误,数组到字符串的转换

$f3->route('GET /details/@itemid',function($f3) {


$arr = array('result' => $f3->get('DBh')->exec('SELECT * FROM DB_table WHERE id=?',$f3->get('ParaMS.itemid')));

str_replace('http://api.example.com/data/','https://example.com/data/',$arr);

$f3->mset($arr);

        echo \Template::instance()->render('views/details.html');
    }
);

解决方法

好吧,您有几个简单的选项可以帮助您解决这个问题。我还将假设您的意思是引用 $arr['result'] 而不仅仅是 $arr 并且我需要假设您只在 db 列中查找一列。我将此列称为 url

选项 1

foreach($arr['result'] as $key => $value) {
    if(empty($value['url'])) {
        continue;
    }
    $arr['result'][$key]['url'] = str_replace('http://api.example.com/data/','https://example.com/data/',$value['url']);
}

选项 2

foreach($arr['result'] as &$value) {
    if(empty($value['url'])) {
        continue;
    }
    $value['url'] = str_replace('http://api.example.com/data/',$value['url']);
}

选项 3

$arr['result'] = array_map(function($value) {
    $value['url'] = str_replace('http://api.example.com/data/',$value['url']);
    return $value;
},$arr['result']);

我个人对可读性和简单性的偏好是选项 2。我相信 foreach 语句已经过优化,实际上比 array_map 运行得更快,这……很有趣。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。