为了账号安全,请及时绑定邮箱和手机立即绑定

在php数组中搜索特定词

在php数组中搜索特定词

PHP
阿晨1998 2021-12-03 19:28:08
我有一个这样的数组$array = [    'item1' => 'red',     'item2' => 'blue#foo#',    'item3' => 'green',    'item4' => 'white#foo2#',    'item5' => 'bla#foo3#ck',    'item6' => 'yellow#foo#'];我不想让所有单词都被#word# 那样包围(单词可以是任何东西)$list = array_unique([ "#foo#", "#foo2#", "#foo3#", #foo#" ]);并用我的数据替换 $array 中的 $list$data = ['John', 'California', 'Cola', .......];最后去$array = [    'item1' => 'red',     'item2' => 'blueJohn',    'item3' => 'green',    'item4' => 'whiteCalifornia',    'item5' => 'blaColack',    'item6' => 'yellowJohn'];如果有人可以建议我。编辑到@mickmackusa 感谢您的链接,但是我怎么能得到我的 $list 呢?这并不是真正的效率,因为如果我的初始数组有很多行,循环可能需要一些时间,但谢谢。这是使用循环执行此操作的唯一方法吗?
查看完整描述

1 回答

?
小唯快跑啊

TA贡献1863条经验 获得超2个赞

不,你不必须使用循环进行更换,但PHP是将“迭代”的阵列不管什么语法,你使用。


Regex 提供了更简洁的代码,但如果您想要更好的性能,strtr()循环内部很可能会执行得更快。


我将$array在我的片段中声明您的输入数据。下面的两个示例都将提供以下输出:


array (

  'item1' => 'red',

  'item2' => 'blueJohn',

  'item3' => 'green',

  'item4' => 'whiteCalifornia',

  'item5' => 'blaColack',

  'item6' => 'yellowJohn',

)

循环strtr():(演示)


$translations = [

    '#foo#'  => 'John',

    '#foo2#' => 'California',

    '#foo3#' => 'Cola',

];


foreach ($array as &$item) {  // modify values by reference with & symbol

    $item = strtr($item, $translations);  // translate placeholder to desired substring from lookup array

}


var_export($array);

preg_replace(): ( Demo ) *通知模式定界符被添加到查找数组中


$translations = [

    '~#foo#~'  => 'John',

    '~#foo2#~' => 'California',

    '~#foo3#~' => 'Cola',

];


var_export(preg_replace(array_keys($translations), $translations, $array));

ps 如果您不知道如何生成您的$list,那么我无法理解您将如何知道如何将特定占位符转换为适当的值。我假设您有足够的项目逻辑知识来编写适当的翻译/查找数组。


查看完整回答
反对 回复 2021-12-03
  • 1 回答
  • 0 关注
  • 174 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信