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

我有一个这样的数组:$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是输出数组的任何元素。我想要输出数组中的所有其他元素。

最佳答案:

这是一个函数,我想它可以做你想做的事情。它需要一个单词列表和一个同义词列表。将处理第一个和最后一个单词,如果它们存在于同义词列表中,则将被替换(取决于同义词数组的索引,位于字符串的开头或结尾)。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

)

Demo on 3v4l.org

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值