我正在尝试匹配数组元素,我意识到即使数组中的元素完全相同,它们也不会相互匹配。
第一个阵列:
$json = '{
"address1": "1818 Grove View",
"address2": "605",
"country": "USA",
"city": "San Diego",
"postcode": "91913",
"contact_name": "Natasha",
"contact_email": "nsr@yahoo.com",
"contact_number": "6198883849"
}';
$data = json_decode($json, true);
$address1 = $data['address1'];
$address2 = $data['address2'];
$country = $data['country'];
$city = $data['city'];
$postcode = $data['postcode'];
$contactName = $data['contact_name'];
$contactEmail = $data['contact_email'];
$contactNumber = $data['contact_number'];
$dataArray[] = array($postcode, $address1, $address2, $city, $country,$contactName, $contactEmail, $contactNumber);
第二阵列:
$this->call('POST', 'address', array(), array(), array(), $json);
$this->assertFalse($this->client->getResponse()->isOk());
$decodedOutput = json_decode($this->client->getResponse()->getContent());
$arrayOutputs[]= array();
foreach($decodedOutput as $dOpt){
$arrayOutputs[] = array($dOpt);
}
为了解释上面的代码,我正在使用Laravel,我正在进行单元测试。我正在调用传递$json
字符串的地址URI的POST路由,$decodedOutput
接收内容并对其进行解码。我将$decodedOutput
中的所有元素放入一个名为$arrayOutputs
如果我var_dump两个数组,这是我得到的: 第一阵列: .array(8){ [0] => string(6)“91913” [1] => string(19)“1818 Grove View” [2] => string(25)“605” [3] => string(9)“USA” [4] => string(9)“圣地亚哥” [5] => 字符串(9)“娜塔莎” [6] => string(19)“nsr@yahoo.com” [7] => string(8)“6138883849” }
第二阵列: array(10){ [0] => array(0){ } [1] => array(1){ [0] => INT(74) } [2] => array(1){ [0] => string(6)“91913” } [3] => array(1){ [0] => string(6)“1818 Grove View” } [4] => array(1){ [0] => string(25)“605” } [5] => array(1){ [0] => string(9)“USA” } [6] => array(1){ [0] => string(9)“圣地亚哥” } [7] => array(1){ [0] => 字符串(9)“娜塔莎” } [8] => array(1){ [0] => string(19)“nsr@yahoo.com” } [9] => array(1){ [0] => string(8)“6198883849” } }
现在显然看起来在格式化方面存在一些差异,但它们仍然是数组。所以我接下来要做的就是检查它们是否真的不同:
if($arrayOutputs[2] === $dataArray[0])
{
echo "Match";
}
else
{
echo "Doesn't Match";
}
我从每个数组中获取了两个元素,我知道它们具有相同的元素,当我运行代码时,我总是得到它们不匹配的元素。他们为什么不同?
答案 0 :(得分:2)
构建第二个阵列时,请替换
foreach($decodedOutput as $dOpt){
$arrayOutputs[] = array($dOpt);
}
与
foreach($decodedOutput as $dOpt){
$arrayOutputs[] = $dOpt;
}
答案 1 :(得分:1)
$arrayOutputs[2]
是一个数组本身
if($arrayOutputs[2][0] === $dataArray[0])
^^^ add this