[英]array_key_exists in a foreach
嗨,我目前正在運行此代碼,
<?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']
, $rslt['code']
div提供set的類,否則我檢查的數組看起來不是這樣,
Array
(
[849650047] => Y
[849652539] => Y
[849652774] => Y
[849656557] => Y
[849652014] => Y
)
但是,每次循環時,所有的div都被設置為'set'類嗎? 它只能在array_key等於當前$code
好了,它們都已經設置好了,因為您永遠不會初始化$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";
}
只需添加unset($set);
在循環結束時。 或者您可以做類似...
<?php foreach($search_results as $rslt) : ?>
<div class="row <? print array_key_exists($rslt['code'], $short_list)? 'set':''; ?>"></div>
<?php endforeach; ?>
避免使用PHP中的替代控件結構語法。 從長遠來看,這很丑陋,使您的代碼難以維護。 還應嘗試避免使用<?php ?>
過多的上下文切換; 它使您的邏輯不必要地難以遵循。
<?php
foreach ($search_results as $result) {
$set = isset($short_list[$result['code']]) ? ' set' : '';
echo "<div class=\"row$set\"></div>";
}
請注意,如果鍵存在於數組中,則isset()
將返回false,但其值為null。 即使$short_list[$result['code']]
值為null,也要注意是否要應用“ set”類。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.