亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

PHP foreach變量范圍問題

PHP foreach變量范圍問題

PHP
明月笑刀無情 2023-05-26 16:08:36
我有一個充滿關聯數組的數組,如下所示:$arr = [  ['title' => 'My title', 'content' => 'lorem ...', comments: 'lorem ipsum'],  ['title' => 'My title 2', 'content' => 'lorem ...'],  ['title' => 'My title 3', 'content' => 'lorem ...'],  ['title' => 'My title 4', 'content' => 'lorem ...', comments: 'lorem ipsum'],];如您所見,其中一些沒有comments.問題是,我有一個這樣的 foreach 循環:<?php foreach($arr as $key => $value){  extract($value);?>  <div>    ...etc    <?php if($comment): ?>       <span><?= $comment ?></span>    <?php endif; ?>  </div><?php } ?>在第二次迭代中,變量$comments現在保存數組中第一項的值,因為它沒有在關聯數組中找到該屬性,而是使用最后一個,從而破壞了語句if。有什么辦法可以避免這種情況而不必comments: null在原始數組中添加 a 或其他東西嗎?
查看完整描述

1 回答

?
慕斯王

TA貢獻1864條經驗 獲得超2個贊

只需使用isset來檢查變量是否$elem['comments']存在:

<div>

<?php

foreach($arr as $key => $elem){

? ? if(isset($elem['comments'])){

? ? ? ? // Comments exists here

? ? ? ? echo "<span>".$elem['comments']."</span>";

? ? }else{

? ? ? ? // Comments do not exists here, so don't echo anything

? ? }

}

?>

</div>

或者使用array_key_exists檢查comments鍵是否在數組中elem


<?php

foreach($arr as $key => $elem){

? ? if(array_key_exists('comments', $elem)) {

? ? ? ? // Comments exists here

? ? ? ? echo "<span>".$elem['comments']."</span>";

? ? }else{

? ? ? ? // Comments do not exists here, so don't echo anything

? ? }

}

?>

請注意:


對于對應于 NULL 值的數組鍵,isset() 不會返回 TRUE,而 array_key_exists() 會。


因此,在您的用例中,我建議您isset在丟棄具有值的現有comments鍵時使用null,就像comments鍵不存在一樣。


查看完整回答
反對 回復 2023-05-26
  • 1 回答
  • 0 關注
  • 167 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號