我需要检查另一个数组中的每一行,如果存在 - 执行某些操作。
这是我的代码:
<?php $Sekcje = explode( ',', $Detail->SectionsPrefered ); ?>
<?php foreach ($SectionsList as $SectionOption): ?>
<div class="checkbox">
<?php if ( in_array( $SectionOption->Title , $Sekcje ) ): ?>
*
<?php endif ?>
<label>
<input type="checkbox" value="<?php echo $SectionOption->Title; ?>">
<?php echo $SectionOption->Title; ?>
</label>
</div>
<?php endforeach ?>
它只显示一个&#39; *&#39;,但必须显示3行(第1节,第2节,第3节)
这里var_dumps:
$ Sekcje
array(3) {
[0]=>
string(8) "Section1"
[1]=>
string(9) " Section2"
[2]=>
string(9) " Section3"
}
$ SectionsList
array(5) {
[0]=>
object(stdClass)#33 (3) {
["ID"]=>
string(1) "1"
["Title"]=>
string(8) "Section1"
["Description"]=>
string(13) "Opis sekcji 1"
}
[1]=>
object(stdClass)#34 (3) {
["ID"]=>
string(1) "2"
["Title"]=>
string(8) "Section2"
["Description"]=>
string(13) "Opis sekcji 2"
}
[2]=>
object(stdClass)#35 (3) {
["ID"]=>
string(1) "3"
["Title"]=>
string(8) "Section3"
["Description"]=>
string(13) "Opis sekcji 3"
}
[3]=>
object(stdClass)#36 (3) {
["ID"]=>
string(1) "4"
["Title"]=>
string(8) "Section4"
["Description"]=>
string(13) "Opis sekcji 4"
}
[4]=>
object(stdClass)#37 (3) {
["ID"]=>
string(1) "5"
["Title"]=>
string(8) "Section5"
["Description"]=>
string(13) "Opis sekcji 5"
}
}
答案 0 :(得分:2)
in_array()
确实(ish)字符串匹配,并且您的字符串不同。来自你自己的转储:
string(9) " Section2"
string(8) "Section2"
请注意$Sekcje
答案 1 :(得分:0)
正如MarcB指出的那样,您的值中有explode()
引起的空格。而不是使用explode()
,请使用:
preg_split('/\s*,\s*/', $Detail->SectionsPrefered, -1, PREG_SPLIT_NO_EMPTY)
这将避免在数组值周围留出空格。