2015-12-15 39 views
1

我有多维数组,其中我使用嵌套的foreach循环来循环查找某人的名字和姓氏。一旦我找到价值,我需要注意那些价值被发现在哪一行。有没有人对我如何去做这件事有任何建议?如何获得在哪个行中找到一个值foreach循环?

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

我不熟悉PHP,但基于这里的文档(https://secure.php.net/manual/en/language.types.array.php),你可以使用$ key来完成它,通过存储它在一个单独的变量中。我会创建另一个变量,可能是一个名为“firstNamePosition”的整数并将其设置为$ key的值。姓氏相同。然后,您可以执行类似$ finalArray(firstNamePosition)和$ finalArray(lastNamePosition)的操作来访问其位置上的元素。 – Boris

回答

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”的行和列现在分别存储在$foundRow$foundCol中,除非“John”不在二维数组中,在这种情况下,两个变量均为NULL

0

使用array_keys()让你的数组的键名:

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

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

    ...//you algo here. 

} 

你能ATLEAST完成你的代码不正是这一切,但问问题的时候说清楚。我不知道你的变量来自哪里。

1

使用你的代码为基础,可以使用以下命令:

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

eval.in工作代码。

相关问题