2015-09-11 190 views
2

我的代碼看起來像間的2個值:比較2個陣列

foreach($client->GetSMSMessages($params)->GetReceivedMessages->ReceivedMessage as $value){ 

    foreach($get_customer as $customer){ 

     if(substr($customer['mobile'],1) == $value->MobileNumber || $customer['mobile'] == $value->MobileNumber){ 

     $name = $customer['name']; 

    }else{ 
    $name = ''; 
    } 
    } 
$json['received'][] = array (
//'rec_id' => $value->SMSID, 
'rec_sms' => $value->Body, 
'rec_customer' => $name, 
'rec_tel' => $value->MobileNumber, 
'rec_date' => $value->DateTime 
); 
} 

我想要實現沒有成功是比較變量$customer['mobile']$value->MobileNumber,如果有任何值匹配打印的客戶名稱( $name = $customer['name'])。

任何想法?

感謝您的幫助

+0

當您找到匹配項時,您需要跳出內部循環。否則,你只要繼續下一個客戶,它不會匹配,你就會設置'$ name ='''。 – Barmar

+0

它會殺了你發佈很好的縮進代碼嗎?我認爲我花更多的時間修復人們的代碼縮進比我發佈實際答案。 – Barmar

+0

@Barmar謝謝你的回答,但是如何從第二個循環中突圍? – Someone33

回答

1

停止循環,當你找到一個匹配,這樣就不會設置$name''上的下一個迭代。

其實,每次都不需要設置$name = ''。只需在循環之前初始化它,並在找到匹配項時將其設置爲找到的客戶名稱。

foreach($client->GetSMSMessages($params)->GetReceivedMessages->ReceivedMessage as $val){ 
    $name = ''; 
    foreach($get_customer as $customer){ 
     if(substr($customer['mobile'],1) == $value->MobileNumber || $customer['mobile'] == $value->MobileNumber){ 
      $name = $customer['name']; 
      break; 
     } 
    } 
    $json['received'][] = array (
     //'rec_id' => $value->SMSID, 
     'rec_sms' => $value->Body, 
     'rec_customer' => $name, 
     'rec_tel' => $value->MobileNumber, 
     'rec_date' => $value->DateTime 
    ); 
}