开发者

returning a record in array based on highest value with php?

开发者 https://www.devze.com 2023-02-21 20:49 出处:网络
Original da开发者_如何转开发ta looks like this: banners/ad_1.png | Banner ad 1 | 1 Here is an array using the print_r function on it:

Original da开发者_如何转开发ta looks like this: banners/ad_1.png | Banner ad 1 | 1

Here is an array using the print_r function on it:

Array ( [0] => banners/ad_1.png Banner ad 1 1 
        [1] => banners/ad_2.png Banner ad 2 2 
        [2] => banners/ad_3.png Banner ad 3 3 )

This is after exploding it with a | delimiter, so it's separated by img src, alt text, num times viewed.

Is there a way I can return the banner information by num times viewed, max or min?

I have been playing with min, max, array_values, array_keys, array_multisort.. I can't figure it out.

Thanks!


This should work, provided this array doesn't get so big that it eats up significant chunks of memory:

<?php

$array = array(
'banners/ad_1.png | Banner ad 1 | 1',
'banners/ad_2.png | Banner ad 2 | 2',
'banners/ad_3.png | Banner ad 3 | 3'
);

$sort = array();

foreach ($array as $row)
{
    $row = explode(" | ", $row); // split up string into a format we can deal with

    // use a unique index so we can keep track of association
    $idx = trim($row[0]); 
    $sort[$idx] = trim($row[2]);
}

arsort($sort); // sorts by value in descending order, keeps index association

print_r($sort);

/*
Should be:
Array(
    'banners/ad_3.png' => 3,
    'banners/ad_2.png' => 2,
    'banners/ad_1.png' => 1
)
*/

Here's some documentation on the arsort function I used.

0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号