关联数组PHP,从已知数据开始获取数据
这可能很简单,但我在试图解决这个问题时遇到了一点小麻烦。我在PHP中有一个关联数组,如下所示:关联数组PHP,从已知数据开始获取数据,php,arrays,Php,Arrays,这可能很简单,但我在试图解决这个问题时遇到了一点小麻烦。我在PHP中有一个关联数组,如下所示: $people= array (["Name" => "Sandra", "Age" => "21"], ["Name" => "Frank", "Age" => "34"], ["Name" => "Marc", "Age" => "56"]); foreach($people as $i){ foreach($i as $info => $v){
$people= array (["Name" => "Sandra", "Age" => "21"], ["Name" => "Frank", "Age" => "34"], ["Name" => "Marc", "Age" => "56"]);
foreach($people as $i){
foreach($i as $info => $v){
if($info == "Name"){
if($v == "Sandra" || $v == "Frank"){
echo $v." has ". $v;
}
}
}
}
现在如果我想知道数组中两个已知元素的年龄,比如Sandra和Frank。我试着这样做:
$people= array (["Name" => "Sandra", "Age" => "21"], ["Name" => "Frank", "Age" => "34"], ["Name" => "Marc", "Age" => "56"]);
foreach($people as $i){
foreach($i as $info => $v){
if($info == "Name"){
if($v == "Sandra" || $v == "Frank"){
echo $v." has ". $v;
}
}
}
}
结果是:桑德拉拥有桑德拉。但这当然不是应该打印的内容。有人能让我理解这个简单的问题吗 试试这个:
$flag = false;
foreach($people as $i){
foreach($i as $info => $v){
if($info == "Name"){
if($v == "Sandra" || $v == "Frank"){
echo $v." has ";
$flag = true;
}
else
$flag = false;
}
if($info == "Age" && $flag){
echo $v;
}
}
}
为什么两个foreach循环,您可以通过一个foreach循环实现:
$people = array(["Name" => "Sandra", "Age" => "21"], ["Name" => "Frank", "Age" => "34"], ["Name" => "Marc", "Age" => "56"]);
foreach ($people as $v) {
if ($v["Name"] == "Sandra" || $v["Name"] == "Frank") {
echo $v["Name"] . " has " . $v["Age"];
echo "<br />";
}
}
首先,在PHP中使用两种使用数组的约定。它有时会变得不清楚,因此只能使用一种约定,例如:
$people= [["Name" => "Sandra", "Age" => "21"], ["Name" => "Frank", "Age" => "34"], ["Name" => "Marc", "Age" => "56"]]
或
您的问题有一个解决方案:
foreach($people as $person)
if($person['Name'] == "Sandra" || $person['Name'] == "Frank")
echo $person['Name'] . ' has ' . $person['Age'];
我投票赞成优化,我只是写了我的答案,因为这是尊重他的wayTHX的答案,但这只是印刷的年龄Sandra@DennysGonzalez只需将第三个
elseif
替换为if
Thx就可以了,非常感谢您的解释和清晰的答案