在php数组中搜索特定词

我有一个这样的数组


$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 呢?这并不是真正的效率,因为如果我的初始数组有很多行,循环可能需要一些时间,但谢谢。


这是使用循环执行此操作的唯一方法吗?


阿晨1998
浏览 175回答 1
1回答

小唯快跑啊

不,你不必须使用循环进行更换,但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,那么我无法理解您将如何知道如何将特定占位符转换为适当的值。我假设您有足够的项目逻辑知识来编写适当的翻译/查找数组。
打开App,查看更多内容
随时随地看视频慕课网APP