Return 二级数组中一个值的最低值的整个数组
Return Entire Array for lowest value of one value inside of secondary array
我确定有人问过这个问题,但我找不到它,所以这里...
我有这个代码(必须使用 php 5.3)
foreach ($array["Book"] as $abeBooks) {
$abeResult[$i] = array(
'itemCondition' => $abeBooks['itemCondition'],
'isbn13' =>$abeBooks['isbn13'],
'listingPrice' =>$abeBooks['listingPrice'],
'Link' =>$abeBooks['listingUrl'],
'sellerRating'=>$abeBooks['sellerRating'],
);
$isbn13[$i] = $abeBooks["isbn13"];
$itemCondition[$i] = $abeBooks["itemCondition"];
$sellerRating[$i] =$abeBooks['sellerRating'];
$Price[$i] = $abeBooks["listingPrice"];
$Link[$i] =$abeBooks['listingUrl'];
$i++; }
它returns :
[{"itemCondition":"Fair","isbn13":"9780134167398","listingPrice":"123.5","Link":"www.abebooks.com\/servlet\/BookDetailsPL?bi=22403600014&cm_ven=sws&cm_cat=sws&cm_pla=sws&cm_ite=22403600014","sellerRating":"4"},{"itemCondition":"Very Good","isbn13":"9780134167398","listingPrice":"140.22","Link":"www.abebooks.com\/servlet\/BookDetailsPL?bi=22334428082&cm_ven=sws&cm_cat=sws&cm_pla=sws&cm_ite=22334428082","sellerRating":"4"},{"itemCondition":null,"isbn13":"9780134167398","listingPrice":"480.7","Link":"www.abebooks.com\/servlet\/BookDetailsPL?bi=22173609508&cm_ven=sws&cm_cat=sws&cm_pla=sws&cm_ite=22173609508","sellerRating":"4"}]
我想做的是如果 itemCondition 是好的、很好的、很好的或新的,则查找最低的 listingPrice 和 return 该项目的整个数组 ex for this它会 return
({"itemCondition":"Fair","isbn13":"9780134167398","listingPrice":"123.5","Link":"www.abebooks.com\/servlet\/BookDetailsPL?bi=22403600014&cm_ven=sws&cm_cat=sws&cm_pla=sws&cm_ite=22403600014","sellerRating":"4"})
确定您将接受的条件
$conditions = array('Fair', 'Very Good', 'Fair', 'New');
过滤数组以仅包含符合这些条件的项目
$results = array_filter($abeResult, function($book) use ($conditions) {
return in_array($book['itemCondition'], $conditions);
});
按listingPrice升序排列结果数组
usort($results, function($a, $b) {
if ($a['listingPrice'] < $b['listingPrice']) return -1;
if ($a['listingPrice'] > $b['listingPrice']) return 1;
return 0;
});
最低价格将是您的第一个结果。
$result = reset($results);
我确定有人问过这个问题,但我找不到它,所以这里...
我有这个代码(必须使用 php 5.3)
foreach ($array["Book"] as $abeBooks) {
$abeResult[$i] = array(
'itemCondition' => $abeBooks['itemCondition'],
'isbn13' =>$abeBooks['isbn13'],
'listingPrice' =>$abeBooks['listingPrice'],
'Link' =>$abeBooks['listingUrl'],
'sellerRating'=>$abeBooks['sellerRating'],
);
$isbn13[$i] = $abeBooks["isbn13"];
$itemCondition[$i] = $abeBooks["itemCondition"];
$sellerRating[$i] =$abeBooks['sellerRating'];
$Price[$i] = $abeBooks["listingPrice"];
$Link[$i] =$abeBooks['listingUrl'];
$i++; }
它returns :
[{"itemCondition":"Fair","isbn13":"9780134167398","listingPrice":"123.5","Link":"www.abebooks.com\/servlet\/BookDetailsPL?bi=22403600014&cm_ven=sws&cm_cat=sws&cm_pla=sws&cm_ite=22403600014","sellerRating":"4"},{"itemCondition":"Very Good","isbn13":"9780134167398","listingPrice":"140.22","Link":"www.abebooks.com\/servlet\/BookDetailsPL?bi=22334428082&cm_ven=sws&cm_cat=sws&cm_pla=sws&cm_ite=22334428082","sellerRating":"4"},{"itemCondition":null,"isbn13":"9780134167398","listingPrice":"480.7","Link":"www.abebooks.com\/servlet\/BookDetailsPL?bi=22173609508&cm_ven=sws&cm_cat=sws&cm_pla=sws&cm_ite=22173609508","sellerRating":"4"}]
我想做的是如果 itemCondition 是好的、很好的、很好的或新的,则查找最低的 listingPrice 和 return 该项目的整个数组 ex for this它会 return
({"itemCondition":"Fair","isbn13":"9780134167398","listingPrice":"123.5","Link":"www.abebooks.com\/servlet\/BookDetailsPL?bi=22403600014&cm_ven=sws&cm_cat=sws&cm_pla=sws&cm_ite=22403600014","sellerRating":"4"})
确定您将接受的条件
$conditions = array('Fair', 'Very Good', 'Fair', 'New');
过滤数组以仅包含符合这些条件的项目
$results = array_filter($abeResult, function($book) use ($conditions) {
return in_array($book['itemCondition'], $conditions);
});
按listingPrice升序排列结果数组
usort($results, function($a, $b) {
if ($a['listingPrice'] < $b['listingPrice']) return -1;
if ($a['listingPrice'] > $b['listingPrice']) return 1;
return 0;
});
最低价格将是您的第一个结果。
$result = reset($results);