如何获取在循环中找到值的行?

时间:2015-12-15 02:59:26

标签: php arrays multidimensional-array

我有多维数组,我在其中使用嵌套的foreach循环来循环查找某人的名字和姓氏。一旦我找到了这个值,我就需要注意这些值的哪一行。有人对我这样做有什么建议吗?

foreach($finalArray as $value){
    foreach($value as $key => $value2){         
        if ($value2 == $firstname){
            $firstnameFound = "true";
            if($value2 == $lastname)
                $lastnameFound = "true";
        }
        $colNumber = $key;  
    }   
}

3 个答案:

答案 0 :(得分:1)

使用您的代码作为基础,您可以使用以下内容:

foreach($finalArray as $key0 => $value){
    foreach($value as $key => $value2){
        if ($value2 == $firstname){
            $col1 = $key0;
            $col2 = $key;
        }
    }
}

eval.in处的工作代码。

答案 1 :(得分:1)

您提供的代码有点令人困惑,因为您将$firstname$lastname$value2进行了比较(暗示它们必须相同才能使搜索成功) 。您还将列存储在if语句之外的$colnumber中,这意味着它最终将被分配给for循环中的最后一列。

使用=>符号非常重要,因为这样您就可以访问要迭代的数组的索引(行或列)。这是一个样板示例,您可以根据自己的需要进行操作,假设table是一个二维字符串数组,并且您希望表的行和列具有字符串“John”。

$foundRow = $foundCol = NULL;
foreach ($table as $rowIndex => $row) {
    foreach ($row as $colIndex => $name) {
        if ($name == "John") {
            $foundRow = $rowIndex;
            $foundCol = $colIndex;
        }
    }
}

注意我们如何在if语句中分配$foundRow$foundCol。找到“John”的行和col现在分别存储在$foundRow$foundCol中,除非“John”不在2D数组中,在这种情况下两个变量都是NULL

答案 2 :(得分:0)

使用array_keys()获取数组的密钥名称:

 foreach(array_keys($finalArray) as $key){

     $column = $key; //key name
     $value = $finalArray[$column]; //value of the key

    ...//you algo here.

}

你能否至少完成你的所有代码,但在提问时要说清楚。我不知道你的变量来自哪里。