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

在php中使用数组和关联数组创建数组的有效方法

在php中使用数组和关联数组创建数组的有效方法

PHP
Qyouu 2021-07-08 14:11:35
我有一个这样的数组:$word=['total','sales']和这样的关联数组:$tot = ['1'=>array('count','total','num of','no of', 'no. of'),        '2'=>array('count')];1 表示它可以在之前使用2 表示它可以在之后使用我必须替换 $word 和 $tot 中存在的单词,并用 $tot 中的所有其他单词更改该单词。位置由上述规则确定。我想要这样的数组数组中的所有组合:[['count', 'sales'],['sales', 'count'],['total', 'sales'],['num of', 'sales'],['no. of', 'sales'],['no of', 'sales']]有没有什么有效的方法可以在 PHP 中做到这一点?PS:- 如果 $word 变量是这些变量中的任何一个,输出应该是相同的:-['count','sales']['sales','count']['no of','sales']PS2:- 基本上,如果 $word 是输出数组的任何元素。我想要输出数组中的所有其他元素。
查看完整描述

1 回答

?
大话西游666

TA贡献1817条经验 获得超14个赞

这是一个我认为可以做你想做的功能。它需要一个单词列表和一个同义词列表。处理第一个和最后一个单词,如果它们存在于同义词列表中,则替换它们(在字符串的开头或结尾,取决于同义词数组的索引)。


function swap_words($words, $synonyms) {

    $all_synonyms = array_unique(array_merge(...$synonyms));


    $result = [];

    $word = $words[0];

    if (in_array($word, $all_synonyms)) {

        foreach ($synonyms[1] as $replacement) {

            $result[] = "$replacement " . implode(' ', array_slice($words, 1));

        }

        foreach ($synonyms[2] as $replacement) {

            $result[] = implode(' ', array_slice($words, 1)) . " $replacement";

        }

    }


    $c = count($words) - 1;

    $word = $words[$c];

    if (in_array($word, $all_synonyms)) {

        foreach ($synonyms[1] as $replacement) {

            $result[] = "$replacement " . implode(' ', array_slice($words, 0, $c));

        }

        foreach ($synonyms[2] as $replacement) {

            $result[] = implode(' ', array_slice($words, 0, $c)) . " $replacement";

        }

    }


    return $result;

}

用法:


$words = ['no of', 'autumn', 'sales'];

$tot = ['1'=>array('count','total','num of','no of', 'no. of'),

        '2'=>array('count')];

print_r(swap_words($words, $tot));


$words = ['autumn', 'sales', 'count'];

print_r(swap_words($words, $tot));

在这两种情况下,输出都是


Array (

  [0] => count autumn sales

  [1] => total autumn sales

  [2] => num of autumn sales

  [3] => no of autumn sales

  [4] => no. of autumn sales

  [5] => autumn sales count

)


查看完整回答
反对 回复 2021-07-09
  • 1 回答
  • 0 关注
  • 141 浏览

添加回答

举报

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