2015-09-11 192 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 
    ); 
}