【问题标题】:Iterative multidimensional associative array using foreach loop in php在php中使用foreach循环的迭代多维关联数组
【发布时间】:2015-06-28 20:33:00
【问题描述】:

我想在多维关联数组中搜索特定记录。当我从第一个数组中搜索记录时它工作正常,但在第二个数组中搜索时它不能正常工作。

这是我的代码:

<?php
$year= array("January"=>array("Ben","Katty","Paul"),
"December"=>array("Ali","Adnan","Sajjad")
);
$match="Ali";
$notThere = True;

foreach ($year as $month => $person) {
    foreach ($person as $subjectName => $ID) {
        if($match==$ID){        
            echo "${ID}. borns on ${month}<br>";
            $notThere = false;
        }
    }
    if($notThere){
        echo "Not Found";
        $notThere=false;
    }   
}
?>

未找到阿里。十二月出生

另外,如果你能解释一下嵌套的foreach 循环是如何工作的。

【问题讨论】:

  • 你期待什么输出
  • 不工作显示 0 一月出生 0 十二月出生..
  • 我想要的是未找到节目或真阿里出生于 1 月的情况
  • 但符合。 to array 阿里出生于12月
  • 首先它输出没有找到..那么阿里出生在12月..为什么它首先显示没有找到

标签: php arrays multidimensional-array foreach


【解决方案1】:

您需要将 If 语句移出循环

<?php
$year= array("January"=>array("Ben","Katty","Paul"),
"December"=>array("Ali","Adnan","Sajjad")
);
$match="Ali";
$notThere = True;

foreach ($year as $month => $person) {
    foreach ($person as $subjectName => $ID) {
        if($match==$ID){        
            echo "${ID}. borns on ${month}<br>";
            $notThere = false;
        }
    }
}
if($notThere){
    echo "Not Found";
    $notThere=false;
}   
?>

【讨论】:

  • 谢谢它的工作,请解释一下这个嵌套循环是如何工作的。一旦我得到关键和价值另一个循环的需要......
  • 第二个循环遍历第一个循环的数组(包含名称)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-12-29
  • 2011-08-30
  • 1970-01-01
  • 2021-12-13
  • 1970-01-01
  • 2021-01-26
相关资源
最近更新 更多