在PHP中使用数组,如何总是将key1更改为key2或将key2更改为key1?

46qrfjad  于 2023-05-16  发布在  PHP
关注(0)|答案(2)|浏览(193)

我之前的代码是一个兰德,它与我现在的意图无关,我现在的意图是每当我找到一个值时,用数组的其他值替换。

$myWords=array(
    array('funny','sad'),
    array('fast','slow'),
    array('beautiful','ugly'),
    array('left','right'),
    array('5','five'),
    array('strong','weak')
);

$mycontentmixed = rewrite3($myVar, $myWords);
$myVar = 'This girl is very funny and fast and kick to left';

当系统发现数组中包含的任何键的值时,总是切换到它的另一个值,我已经准备好了这些系统,但它确实是一个有时福尔斯在同一个键上的兰德,并且在50%的情况下它不值,我总是想改变。
我想更改为:

output: 'This girl is very sad and slow and kick to right';

如果你找到了另一把钥匙:

$myVar = 'This girl is very sad and slow and kick to right';

切换到:

Output: 'This girl is very funny and fast and kick to left';

当在$myVar变量中找到其中一个键时,总是交换另一个键。
谢谢

mu0hgdu0

mu0hgdu01#

Barmar是对的,strtr()是这个任务的正确函数。因为$myWords数组的结构不是为了立即与strtr()一起使用,所以需要两个预备函数调用。array_column()用于在使用第二个和第三个参数时创建关联数组。
代码:(Demo

$myVar = 'This girl is very sad and ugly so swipe left';
echo strtr(
         $myVar,
         array_column($myWords, 0, 1)
         + array_column($myWords, 1, 0)
     );

输入/输出:

$myVar = 'This girl is very funny and fast and kick to left';
// output :  This girl is very sad and slow and kick to right

   $myVar = 'This girl is very sad and slow and kick to right';
// output :  This girl is very funny and fast and kick to left

   $myVar = 'I was beautiful and strong when I was 5 now I\'m ugly and weak';
// output :  I was ugly and weak when I was five now I'm beautiful and strong

我不能使用array_merge(),因为数字字符串(例如5)在这个过程中被擦洗。这就是使用+(数组联合运算符--不是加法运算符)的原因。

y4ekin9u

y4ekin9u2#

这段代码将做到这一点:

$myWords=array(
array('funny','sad')
,array('fast','slow')
,array('beautiful','ugly')
,array('left','right')
,array('5','five')
,array('strong','weak')
);

$myVar = 'This girl is very funny and fast and kick to left';

foreach ($myWords as $key => $val) {
  if (strpos($myVar, $val[0]) !== FALSE) {
    $myVar = str_replace($val[0], $val[1], $myVar);
  }
  else {
    $myVar = str_replace($val[1], $val[0], $myVar);
  }
}
echo $myVar;

希望这能帮上忙。

相关问题