foreach循环将字符串添加到特定值

我正在尝试为我的foreach循环中的一个值添加一个字符串,用于2个特定值。我必须使用功能in_array(),因为它是学校的练习。由于某些原因,我希望它无法正常工作。

当键与值匹配时,我尝试使用if语句,但是它将字符串添加到索引的第一个值,而不是我要从数组中获取的特定值。

描述:打印数组并将字符串“ new”添加到Beautiful People and Higher Love。使用功能in_array()。不允许其他功能。

$thisWeek = array(
    'Dance Monkey','Circles','Beautiful People','Blue Day','Higher Love'
   );



 foreach ($thisWeek as $key => $value) {

if (in_array("Beautiful People",$thisWeek)  && $key== "Beautiful People") {
  echo "$key => $value  - new <br>";
  }
else {
  echo "$key => $value <br>";
  }
}

预期输出应为:

0 =>舞猴

1 =>圆圈

2 =>美丽的人-新的

3 =>蓝色的日子

4 =>更高的爱情

我得到这个:

0 =>舞猴-新

1 =>圆圈

2 =>美丽的人

3 =>蓝色的日子

4 =>更高的爱情

此外,我还必须在“ Higher Love”之外加上字符串“ new”。我正在测试一个值。为什么它不起作用,并且代码将字符串添加到第一个键值而不是正确的键值?

yanhong123456 回答:foreach循环将字符串添加到特定值

除了其他答案,来自

if (in_array("Beautiful People",$thisWeek)  && $key== "Beautiful People")

收件人

if (in_array("Beautiful People",$thisWeek)  && $value == "Beautiful People")

是多余的,因为您正在循环$thisWeek

如果该语句in_array("Beautiful People",$thisWeek)为假,则该$value == "Beautiful People"将永远为真。

您的条件可以简化为:

if ($value == "Beautiful People")

但是,您的任务是查找$value"Beautiful People"还是"Higher Love"

您可以这样写:

if ($value == "Beautiful People" || $value == "Higher Love")

或:

// An array containing the values you are looking for
//                                     |
// Current value +   +-----------------+-----------------+
//               |   |                                   |
//               v   v                                   v
if (in_array($value,[ "Beautiful People","Higher Love" ]))
,

您的代码无法正常运行,因为$key是当前索引,并且您正在将其与值进行比较。因此,您应该更改:

if (in_array("Beautiful People",$thisWeek)  && $key == "Beautiful People")

收件人:

if (in_array("Beautiful People",$thisWeek) && $value == "Beautiful People")
,

在测试中...

if (in_array("Beautiful People",$thisWeek)  && $key== "Beautiful People") {

$key是行的索引,而不是值,因此将其更改为

if (in_array("Beautiful People",$thisWeek)  && $value == "Beautiful People") {

关于为什么给出奇怪结果的原因,请阅读Comparing String to Integer gives strange results

,

您应将$key更改为$value

$thisWeek = array(
    'Dance Monkey','Circles','Beautiful People','Blue Day','Higher Love'
);

foreach ($thisWeek as $key => $value) {
    if (in_array("Beautiful People",$thisWeek)  &&  ($value == "Beautiful People")) {
        echo "$key => $value  - new <br>";
    } else {
        echo "$key => $value <br>";
    }
}

第一个条件等于第二个条件,因此您可以减少为:

if (in_array("Beautiful People",$thisWeek))
本文链接:https://www.f2er.com/3166106.html

大家都在问