Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/281.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
关联数组PHP,从已知数据开始获取数据_Php_Arrays - Fatal编程技术网

关联数组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){

这可能很简单,但我在试图解决这个问题时遇到了一点小麻烦。我在PHP中有一个关联数组,如下所示:

$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就可以了,非常感谢您的解释和清晰的答案