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

时间:2019-11-04 14:11:02

标签: php

我正在尝试为我的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”。我正在测试一个值。为什么它不起作用,并且代码将字符串添加到第一个键值而不是正确的键值?

4 个答案:

答案 0 :(得分:2)

除了其他答案,来自

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" ]))

答案 1 :(得分:1)

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

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

收件人:

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

答案 2 :(得分:1)

在测试中...

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

答案 3 :(得分:0)

您应将$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))