簡體   English   中英

array_key_exists在foreach中

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM