2014-05-11 58 views
0

我遇到了一些與我的algorythm有關的問題,無法找到解決方法。我有點生鏽的編程,對不起,如果這是一個愚蠢的問題。檢查元素是否在一個數組中,並增加

假設我有一個像下面

$records = array(
    array(
     'weight' => 2135, 
     'n2' => 'John', 
     'n1' => 'Jones', 
    ), 
    array(
     'weight' => 3245, 
     'n2' => 'Sally', 
     'n1' => 'Smith', 
    ), 
    array(
     'weight' => 5342, 
     'n2' => 'Sally', 
     'n1' => 'Jones', 
    ), 
    array(
     'weight' => 5623, 
     'n2' => 'Peter', 
     'n1' => 'Doe', 
    ) 
); 

我想檢查兩個變量數組中存在,例如一個數組。我想檢查一下「SallyANDJones」是否出現在一次發生中,無論它在n1還是n2中,重要的是它們都在那裏。如果它們存在,我想要++重量。

否則,如果我搜索,例如「約翰史密斯」,他們是不存在的陣中,我想這ocurrence推到陣列,並添加體重值的這種發生。

有沒有人有任何想法我可以做到這一點?我被封鎖了,並且已經爲此工作了2天。

謝謝。

回答

0

循環遍歷記錄,並檢查名稱

foreach($records as $record){ 
     if (in_array("Sally", $record)) { 
     //increase weight 
     }else{ 
     //push to array 
     } 
    } 
+0

它並沒有真正的工作,因爲只有在foreach結束生病知道如果它存在與否。但是如果我添加一個標誌,它會像魅力一樣工作! :) – diegodacal

+0

@diegodacal即時消息給你指針,因爲你還沒有顯示你的代碼。當然你需要根據你的需要調整它:) – meda

0

Completeley未經測試,可能不會做的正是你想要什麼,但這個將設置你在正確的道路上。

$contains = FALSE; 
$contains = findNames($array, $firstName, $lastName); 

if($contains === TRUE) 
{ 
    // Add your weight to the array here 
} else { 
    // Do something else or nothing 
} 

function findNames($array, $firstName, $lastName) { 
foreach($array as $arrayValues=> $arrayValue) { 
    if($arrayValue['n1'] == $firstName || $arrayValue['n1'] == $lastName ||          $arrayValue['n2'] == $firstName || $arrayValue['n2'] == $lastName) { 
     return TRUE; 
    } else { 
     return FALSE; 
    } 
} 

OR:

function findNames($array, $firstName, $lastName) { 

if(in_array($firstName, $array) || in_array($lastName, $array)) 
{ 
    return TRUE; 
} else { 
    return FALSE; 
} 
相關問題