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