您好,我目前正在运行此代码,
<?php foreach($search_results as $rslt) : ?>
<?
$code = $rslt['code'];
if(array_key_exists($code, $short_list)) {
$set = "set";
}
?>
<div class="row <? echo $set;?>"></div>
我想要实现的是,如果数组等于$rslt['code']
,那么给div设置类,否则我检查的数组看起来不像这样,
Array
(
[849650047] => Y
[849652539] => Y
[849652774] => Y
[849656557] => Y
[849652014] => Y
)
但是每次循环我所有的div都会被设置为'set'类?它应该只是array_key等于当前$code
答案 0 :(得分:4)
嗯,它们都已设置,因为您永远不会初始化$set
变量:
<?php foreach($search_results as $rslt) : ?>
<?
$set = '';
$code = $rslt['code'];
if(array_key_exists($code, $short_list)) {
$set = "set";
}
?>
<div class="row <? echo $set;?>"></div>
另外,只需使用isset()
代替array_key_exists
(效率更高,更少罗嗦):
if(isset($short_list[$code])) {
$set = "set";
}
答案 1 :(得分:0)
只需在循环结束时添加unset($set);
即可。或者你可以做点什么......
<?php foreach($search_results as $rslt) : ?>
<div class="row <? print array_key_exists($rslt['code'], $short_list)? 'set':''; ?>"></div>
<?php endforeach; ?>
答案 2 :(得分:0)
避免PHP中的备用控制结构语法。这很丑陋,从长远来看,使代码更难维护。同时尽量避免使用<?php ?>
进行过多的上下文切换;它使你的逻辑难以理解。
<?php
foreach ($search_results as $result) {
$set = isset($short_list[$result['code']]) ? ' set' : '';
echo "<div class=\"row$set\"></div>";
}
请注意,如果数组中存在键,isset()
将返回false,但其值为null。如果您希望应用“set”类,即使$short_list[$result['code']]
的值为null,也需要注意。