我有一个数组,我想在其中过滤出有关OrderId的所有信息。因此,我想通过一个包含我的OrderId的变量来array_search我的数组。这样,我就可以获得数组密钥,然后使用array_slice对数组进行切片。
Array
(
[Order] => Array
(
[0] => Array
(
[OrderId] => 4832413060
[DateTimeCustomer] => 2018-07-17T12:55:07.000+02:00
[DateTimeDropShipper] => 2018-07-17T12:55:07.000+02:00
[CustomerDetails] => Array
(
[ShipmentDetails] => Array
(
[SalutationCode] => 01
[Firstname] => name
[Surname] => sirname
[Streetname] => streetname
[Housenumber] => number
[ZipCode] => zipcode
[City] => city
[CountryCode] => countryCode
[Email] => email
)
[BillingDetails] => Array
(
[SalutationCode] => 01
[Firstname] => name
[Surname] => sirname
[Streetname] => streetname
[Housenumber] => number
[ZipCode] => zipcode
[City] => city
[CountryCode] => countryCode
[Email] => email
)
)
[OrderItems] => Array
(
[OrderItem] => Array
(
[OrderItemId] => orderitemid
[OfferReference] => Array
(
)
[EAN] => ean
[Title] => title
[Quantity] => 1
[OfferPrice] => 14.95
[TransactionFee] => 3.24
[LatestDeliveryDate] => 2018-07-18+02:00
)
)
)
[1] => Array
(
[OrderId] => 4832413070
[DateTimeCustomer] => 2018-07-17T12:55:07.000+02:00
[DateTimeDropShipper] => 2018-07-17T12:55:07.000+02:00
[CustomerDetails] => Array
(
[ShipmentDetails] => Array
(
[SalutationCode] => 01
[Firstname] => name
[Surname] => sirname
[Streetname] => streetname
[Housenumber] => number
[ZipCode] => zipcode
[City] => city
[CountryCode] => countryCode
[Email] => email
)
[BillingDetails] => Array
(
[SalutationCode] => 01
[Firstname] => name
[Surname] => sirname
[Streetname] => streetname
[Housenumber] => number
[ZipCode] => zipcode
[City] => city
[CountryCode] => countryCode
[Email] => email
)
)
[OrderItems] => Array
(
[OrderItem] => Array
(
[OrderItemId] => orderitemid
[OfferReference] => Array
(
)
[EAN] => ean
[Title] => title
[Quantity] => 1
[OfferPrice] => 14.95
[TransactionFee] => 3.24
[LatestDeliveryDate] => 2018-07-18+02:00
)
)
)
我尝试的代码如下:
foreach ($items as $item) {
$key = array_search($item, $array1);
$item与OrderId相同。
我尝试了互联网上的许多不同的例子,但不幸的是,似乎没有一个对我有效。
发布于 2018-07-18 04:58:38
array_search()
不适用于多维数组。使用array_filter()
foreach ($items as $item) {
$found = array_filter($array, function($element) use($item) {
return $element['OrderId'] == $item;
}
// $found now contains all the elements in the original array for $item
...
}
发布于 2018-07-18 05:04:25
我认为可以使用array_column将数组与orderid关联起来作为键,这样就可以很容易地找到orderid。
但这假设您在数组中只有唯一的orderid。
$find = 4832413060;
$arr = array_column($arr, NULL, 'orderid');
$findOrder = $arr[$find];
Var_dump($findOrder);
我制作了一个小数组来演示代码。
https://stackoverflow.com/questions/51389897
复制相似问题