2015-12-15 43 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工作代碼。

相關問題