检查数组中的数组是否存在于 php
Check if array inside array exists in php
一次只能退回一件产品。当产品有成分时,我的代码会按预期工作。如果没有,我得到:
Undefined offset: 0
其中引用了代码行:if ($response_decoded['products'][0]['ingredients'] != null){
我明白这是因为没有配料,但也会有这样的时候,这是不可避免的。
所以,此时:
$request->setMethod(HTTP_Request2::METHOD_GET);
$request->setBody("{body}");
try
{
$response = $request->send();
$result = $response->getBody();
$response_decoded = json_decode($result,true);
print_r($response_decoded);
...我回来了:
Array ( [products] => Array ( [0] => Array ( [gtin] => 05052909299653 [tpnb] => 065738756 [tpnc] => 272043262 [description] => Tesco Lemon And Lime Zero 2L [brand] => TESCO [qtyContents] => Array ( [quantity] => 2000 [totalQuantity] => 2000 [quantityUom] => ml [netContents] => 2L e ) [productCharacteristics] => Array ( [isFood] => [isDrink] => 1 [healthScore] => 70 [isHazardous] => [storageType] => Ambient [isNonLiquidAnalgesic] => [containsLoperamide] => ) [ingredients] => Array ( [0] => Carbonated Water [1] => Citric Acid [2] =>
等等...
然后我做:
// check for ingredient array
if ($response_decoded['products'][0]['ingredients'] != null){
// can now target ingredient array
$ingredients = $response_decoded['products'][0]['ingredients'];
所以我认为我需要事先检查 'ingredients' 是否存在,而不仅仅是 != null
。我虽然可以使用 array_key_exists
来做到这一点。
if (array_key_exists('products', $response_decoded)) {
echo "Product is there";
}
else{
echo "Product is not there";
}
现在有效了,它告诉我产品是否存在...但是如何检查产品的成分是否存在?
如果您使用的是 PHP 7+,则无需检查数组的每个维度——您可以在最后一个元素上使用 null 合并运算符 ??
:
if ($response_decoded['products'][0]['ingredients'] ?? null !== null) {
// ingredients exist
}
如果该值存在且不为空,则您将属于该条件。如果数组的任何部分不存在,它将失败,但不会抱怨有关未定义索引的警告。
一次只能退回一件产品。当产品有成分时,我的代码会按预期工作。如果没有,我得到:
Undefined offset: 0
其中引用了代码行:if ($response_decoded['products'][0]['ingredients'] != null){
我明白这是因为没有配料,但也会有这样的时候,这是不可避免的。
所以,此时:
$request->setMethod(HTTP_Request2::METHOD_GET);
$request->setBody("{body}");
try
{
$response = $request->send();
$result = $response->getBody();
$response_decoded = json_decode($result,true);
print_r($response_decoded);
...我回来了:
Array ( [products] => Array ( [0] => Array ( [gtin] => 05052909299653 [tpnb] => 065738756 [tpnc] => 272043262 [description] => Tesco Lemon And Lime Zero 2L [brand] => TESCO [qtyContents] => Array ( [quantity] => 2000 [totalQuantity] => 2000 [quantityUom] => ml [netContents] => 2L e ) [productCharacteristics] => Array ( [isFood] => [isDrink] => 1 [healthScore] => 70 [isHazardous] => [storageType] => Ambient [isNonLiquidAnalgesic] => [containsLoperamide] => ) [ingredients] => Array ( [0] => Carbonated Water [1] => Citric Acid [2] =>
等等...
然后我做:
// check for ingredient array
if ($response_decoded['products'][0]['ingredients'] != null){
// can now target ingredient array
$ingredients = $response_decoded['products'][0]['ingredients'];
所以我认为我需要事先检查 'ingredients' 是否存在,而不仅仅是 != null
。我虽然可以使用 array_key_exists
来做到这一点。
if (array_key_exists('products', $response_decoded)) {
echo "Product is there";
}
else{
echo "Product is not there";
}
现在有效了,它告诉我产品是否存在...但是如何检查产品的成分是否存在?
如果您使用的是 PHP 7+,则无需检查数组的每个维度——您可以在最后一个元素上使用 null 合并运算符 ??
:
if ($response_decoded['products'][0]['ingredients'] ?? null !== null) {
// ingredients exist
}
如果该值存在且不为空,则您将属于该条件。如果数组的任何部分不存在,它将失败,但不会抱怨有关未定义索引的警告。