2016-01-12 47 views
0

我有兩個數組:如果存在,則循環遍歷數組?

$qa_content['form']['fields'] 
$qa_content['form_q_edit']['fields'] 

一個或它們的零的同時存在最多。我想循環存在的那個。

我可以這樣做:

if isset($qa_content['form_q_edit']['fields']){ 
    loop($qa_content['form_q_edit']['fields']) 
}elseif (isset $qa_content['form_q_edit']['fields']{ 
    loop($qa_content['form_q_edit']['fields']) 
} 

但有通過mergeing他們什麼做的,也許更清潔的/更聰明的方式?

+1

不知道這有什麼差別,但你可以使用['array_key_exists()' ](http://php.net/manual/en/function.array-key-exists.php)而不是'isset()'。你可以這樣使用它:'array_key_exists('fields',$ qa_content ['form']);'...... – War10ck

+0

@ War10ck是的,有多種方法可以解決軟件工程中的問題。 –

+0

@self對不起,我對你的評論有點困惑?我知道有多種解決方法。我更加意思我不確定它是否會在執行時間,流程等方面造成任何顯着差異。 – War10ck

回答

0

如果循環功能做了同樣的兩個數組合並它們,之後調用循環功能是這樣的:

$merge= array_merge($qa_content['form_q_edit']['fields'], $qa_content['form_q_edit']['fields']); 
if($all){ 
loop($merge); 
} 
+0

它更乾淨/更聰明嗎? – felipsmartins

+0

在我看來它有點乾淨。重複的if-/elseif-子句並不那麼幹淨。 – osanger

+0

這隻適用於兩個數組都存在的情況。 – Himmators

0

這取決於如果陣列的處理將是相同的。如果是這樣,最佳優化不會複製循環中更復雜的處理邏輯。例如,如果在循環中的處理是相同的,將是更好的只有循環處理邏輯,一旦這樣的:

$myArr = NULL; 

if isset($qa_content['form_q_edit']['fields']){ 
    $myArr = $qa_content['form_q_edit']['fields']; 
}elseif (isset $qa_content['form_q_edit']['fields']){ 
    $myArr = $qa_content['form_q_edit']['fields']; 
} 

if(!is_null($myArr)) 
{ 
    loop($myArr) 
    { 
    //do common processing here 
    } 
}