【问题标题】:Return Entire Array for lowest value of one value inside of secondary array返回整个数组以获取辅助数组中一个值的最小值
【发布时间】:2017-11-06 13:32:59
【问题描述】:

我确定有人问过这个问题,但我找不到,所以这里...

我有这个代码(必须使用 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++; }

它返回:

[{"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 并返回该项目的整个数组,例如它会返回

({"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"})

【问题讨论】:

    标签: php arrays min


    【解决方案1】:

    制定您将接受的条件

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

    【讨论】:

    • 这给了我一个 false 的结果输出,如果我尝试输出结果,我会得到空白括号
    • @ForgivenIT 哦,是的,可能是因为我不小心使用了对象表示法而不是数组。我更新了答案。
    • 我一直在摸索它是如何与对象表示法一起工作的,我以为我错过了一些东西,感谢更新,让我头疼不已
    • 抱歉,我很懒,只是解码了您的 JSON 输出以生成数据来测试此代码。我一开始忘了你是从一个数组开始的。
    • 如果我需要问另一个问题,请告诉我——所以现在我需要做同样的事情,但搜索数组的不同部分——exc $international = array("%international%" , "%国际%","%全球%");将在上述搜索之前搜索数组,但它会搜索 ['vendorDescription'],然后它会搜索上述有效的条件.. 这可能还是我应该以完全不同的方式进行
    猜你喜欢
    • 2016-02-27
    • 1970-01-01
    • 2017-07-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-27
    • 2021-11-30
    • 2021-12-03
    相关资源
    最近更新 更多