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);