比较json响应从android到外部json url在php服务器
问题描述:
我想比较从android应用程序通过mobileuser输入的条码到我从服务器端使用php从商家收到的json url。比较json响应从android到外部json url在php服务器
认为这是我的手机用户数据(硬编码):
$mobile_card="Card1";
$mobile_code="00004000";
这是JSON URL我收到:
$merchant = file_get_contents('http://localhost/project1/index.php/memberaccount/sendjson');
$decode=json_decode($merchant, true);
有在JSON的URL数据的两个行:
[{"merchant_code":"12300000","merchant_contact":"011000000"},
{"merchant_code":"00004000","merchant_contact":""}]
这是我的代码,用于比较$ mobile_code和$ merchant_code:
foreach ($decode as $d)
{
$merchantCode = $d['merchant_code'];
if ($merchantCode == $mobile_code)
{
$response["success"] = 1;
$response["message"] = "code Exists.";
echo json_encode($response);
}
else
{
$response["success"] = 0;
$response["message"] = "code NOT Exists";
echo json_encode($response);
}
}
}
这是输出我得到:
{"success":0,"message":"Code NOT exists"}
{"success":1,"message":"Code Exists."}
不过,我只是想输出是只有一条线路,在这种情况下,在第二行存在的代码,所以我只是想要的结果以显示成功和存在的结果。 (仅显示“条码已存在”)
我不想要不成功的结果。 任何人都可以提供帮助吗? 谢谢!
答
试试看这样的:
foreach ($decode as $d)
{
$merchantCode = $d['merchant_code'];
if ($merchantCode == $mobile_code)
{
$response["success"] = 1;
$response["message"] = "code Exists.";
echo json_encode($response);
die();
}
}
$response["success"] = 0;
$response["message"] = "code NOT Exists";
echo json_encode($response);
或者,如果你想成为一个有点更优雅(使用die()
是不是很好),封装一个函数里面的代码:
function lookupMerchantCode($merchants, $code)
{
foreach ($merchants as $merchant)
{
$merchantCode = $merchant['merchant_code'];
if ($merchantCode == $code)
{
return true;
}
}
return false;
}
$result = lookupMerchantCode($decode, $mobile_code);
if ($result)
{
echo json_encode(array('success' => 1, 'message' => 'code Exists'));
}
else
{
echo json_encode(array('success' => 0, 'message' => 'code NOT Exists'));
}
它的工作原理!然后,如果我要在if语句中调用另一个函数,例如:$ this - > actionValidatePhone();我死前放弃();对?或者我应该把它放在后面? – imcrazy 2015-04-05 08:58:38
使用第二种解决方案,封装逻辑内部功能更好。 – alfallouji 2015-04-05 08:59:30
对不起,这是什么意思:封装函数内部的逻辑? – imcrazy 2015-04-05 09:01:11