2012-12-14 28 views
1

嗨請運行我的代碼:請參閱我的預期輸出。如何爲我的預期結果調整我的代碼。如何比較magento中具有平行行和列索引的多維數組?

<?php 
$arrayA=array(array("id" => 8, "name" => "test1"), 
      array("id" => 4, "name" => "test2"), 
      array("id" => 4, "name" => "test3") 
); 
$arrayB=array(array("id" => 3, "domain_name" => "www.test.com","activation_key" =>"ADKLJ"), 
      array("id" => 4, "domain_name" => "www.yahoomail.com","activation_key" =>"LKLJ"), 
      array("id" => 4, "domain_name" => "www.gmail.com","activation_key" =>"OLOLJ")   
); 

//$places=Array(); 
$i=0; 
foreach($arrayA as $itemA) 
{ 
    $match=0; 

    foreach($arrayB as $itemB) 
    { 
     if($itemA["id"]==$itemB["id"]) 
     { 
      $arrayA[$i]["domain_name"]=$itemB["domain_name"]; 
      $arrayA[$i]["activation_key"]=$itemB["activation_key"]; 
      $match=1; 
     } 
    } 
    if($match==0) 
    { 
      $arrayA[$i]["domain_name"]=""; 
      $arrayA[$i]["activation_key"]=""; 
    } 
    $i++; 
} 
echo "<pre>"; 
print_r($arrayA); 
echo "</pre>"; 

?> 

輸出

陣列 ( [0] =>數組 ( [ID] => 8 [名稱] => TEST1 [DOMAIN_NAME] => [activation_key] => )

[1] => Array 
    (
     [id] => 4 
     [name] => test2 
     [domain_name] => www.gmail.com 
     [activation_key] => OLOLJ 
    ) 

[2] => Array 
    (
     [id] => 4 
     [name] => test3 
     [domain_name] => www.gmail.com 
     [activation_key] => OLOLJ 
    ) 

但我的期望輸出是

陣列 ( [0] =>數組 ( [ID] => 8 [名稱] => TEST1 [DOMAIN_NAME] => [activation_key ] => )

[1] => Array 
    (
     [id] => 4 
     [name] => test2 
     [domain_name] => www.yahoomail.com 
     [activation_key] => LKLJ 
    ) 

[2] => Array 
    (
     [id] => 4 
     [name] => test3 
     [domain_name] => www.gmail.com 
     [activation_key] => OLOLJ 
    ) 

回答

0

嘗試以下方法

<?php 
$arrayA=array(array("id" => 8, "name" => "test1"), 
      array("id" => 4, "name" => "test2"), 
      array("id" => 4, "name" => "test3") 
); 
$arrayB=array(array("id" => 3, "domain_name" => "www.test.com","activation_key" =>"ADKLJ"), 
      array("id" => 4, "domain_name" => "www.yahoomail.com","activation_key" =>"LKLJ"), 
      array("id" => 4, "domain_name" => "www.gmail.com","activation_key" =>"OLOLJ")   
); 

//$places=Array(); 
$i=0; 
foreach($arrayA as $key => $itemA) 
{ 
    $match=0; 
    $itemB = $arrayB[$key]; 
     if($itemA["id"]==$itemB["id"]) 
     { 
      $arrayA[$i]["domain_name"]=$itemB["domain_name"]; 
      $arrayA[$i]["activation_key"]=$itemB["activation_key"]; 
      $match=1; 
     } 
    if($match==0) 
    { 
      $arrayA[$i]["domain_name"]=""; 
      $arrayA[$i]["activation_key"]=""; 
    } 
    $i++; 
} 
echo "<pre>"; 
print_r($arrayA); 
echo "</pre>"; 

?> 

工作示例:http://codepad.org/mrBqqeli

+0

非常感謝。現在它爲我工作 –

+0

您的歡迎。爲你接受答案是很好的。它會增加更改以獲得更多答案,您的問題 – GBD

0
// store all activated domains 
$activated = array(); 

foreach($arrayA as $key => $itemA) 
{ 
    $match=0; 

    foreach($arrayB as $itemB) 
    { 
     if($itemA["id"]==$itemB["id"] && !in_array($itemB["domain_name"],$activated)) 
     { 
      $arrayA[$key]["domain_name"]=$itemB["domain_name"]; 
      $arrayA[$key]["activation_key"]=$itemB["activation_key"]; 
      $match=1; 
      $activated[] = $itemB["domain_name"]; 
      break; 
     } 
    } 
    if($match==0) 
    { 
      $arrayA[$key]["domain_name"]=""; 
      $arrayA[$key]["activation_key"]=""; 
    } 
} 
echo "<pre>"; 
print_r($arrayA); 
echo "</pre>"; 
+0

非常感謝。它爲我工作。很大的幫助。 –

+0

歡迎您,當問題解決後,您會在答覆中看到一個綠色標記,點擊接受答案,如果您接受答案,您將在未來獲得更多幫助。 – user969068