Сортиране на стойности от масив

Hous

Registered
Как във този код:
Код:
function ArrMap($ar) { 
return trim(strtolower($ar)); 
}


$nametag=explode(".", $name);
$tags = explode('_', $nametag[0]);

$tags = array_map('ArrMap', $tags);

$NewArr = array_unique($tags);

foreach ($NewArr as $tag){

$size=strlen($tag);
echo " <a href='search/".$tag."/' style='font-size:".($size+10)."px;'>".$tag."</a> ";
}
да сортирам при показване стойностите да се подреждат разбъркано,но не при всеки рефреш да се сменят,и другото което е ,как да показвам само стойности който да 3 или повече символа (ако е 1-2 да не се показват)
 
Промени си само променливата $Interval, тя се грижи през колко секудни да обнови стойностите на масива.


Забелязах, че използването на този код, ускорява със 0.0001 сек. повече сайта, от колкото стария вариант на този код.

Хубаво е обаче да си защитиш сесиите все пак, криптирай информацията после си е декриптирай и така (става дума попринцип), разбира се има неща който трябва и да се хешират.

PHP:
<?php
session_start();

function ArrMap($ar) {
    return trim(strtolower($ar));
}



/** Set the interval to re - shuffle the values */

$Interval = 30;

/** Current time */
$Now = time();

if (!isset($_SESSION['Order'])) {

    $name = 'eheeeeeeeee_kusa2_kusa2 _dumaDulga3_dumata4_dma5_duma6.mp3';

    $nametag = explode(".", $name);

    $tags = explode('_', $nametag[0]);

    $tags = array_map('ArrMap', $tags);

    $NewArr = array_unique($tags);

    shuffle($NewArr);

    $_SESSION['Order']['NewArr'] = $NewArr;

    $_SESSION['Order']['Time'] = $Now;
} else {

    $NewArr = $_SESSION['Order']['NewArr'];

    if (isset($_SESSION['Order']['Time'])) {

        $SesTime = $_SESSION['Order']['Time'];
        $Diffrence = $Now - $SesTime;

        if ($Diffrence > $Interval) {
            $_SESSION['Order']['Time'] = $Now;
            shuffle($NewArr);
            $_SESSION['Order']['NewArr'] = $NewArr;
        }
    }
}

foreach ($NewArr as $tag) {

    $size = strlen($tag);
    
    if($size >= 3) {
    
    echo " <a href='search/" . $tag . "/' style='font-size:" . ($size + 10) . "px;'>" . $tag . "</a> ";

    }
    
}
 
Няма ли вариянт вместо shuffle да е нещо между arsort и asort в смисъл да не правя излишно сесия,и да ги подрежда пак разбъркано но само за окото,а реално да е по някакъв алгоритъм примерно : кратка дума,дълга дума,кратка дума,дълга дума :?

Иначе за това if size > 3 не знам как не се сетих :o
 
Май съм разбрал грешно.

НЕ искаш след определно време отново да се разместват, АМИ винаги да са по един и същи начин разместени и да си седят така?
 
eddyy93 каза:
Май съм разбрал грешно.

НЕ искаш след определно време отново да се разместват, АМИ винаги да са по един и същи начин разместени и да си седят така?
точно,идеята е да са разбъркани но само за окото,реално да е по определен начин ,примерно както дадох дълга дума | къса дъма | дълга дума | къса дума
 
Така създаваме md5 и sha1 формати на думите, това го правя за да мога да взема друг вариант на думите (може да ползваш и други функции за конвертиране/форматиране/хеширане/криптиране и т.н.).

След това сравнявам чрез strcmp

PHP:
<?php
session_start();

function ArrMap($ar) {
    return trim(strtolower($ar));
}

function cmp($a, $b)
{
    
   $a = md5($a);
   $b = sha1($b);
   return strcmp($a, $b);
}





    $name = 'eheeeeeeeee_kusa2_kusa2 _etetumaDulga3_adumata4_dma5_duma6.mp3';

    $nametag = explode(".", $name);

    $tags = explode('_', $nametag[0]);

    $tags = array_map('ArrMap', $tags);

    $NewArr = array_unique($tags);

    usort($NewArr, "cmp");

foreach ($NewArr as $tag) {

    $size = strlen($tag);
    
    if($size >= 3) {
    
    echo " <a href='search/" . $tag . "/' style='font-size:" . ($size + 10) . "px;'>" . $tag . "</a> ";

    }
    
}
 
сори ,че те измъчих но намерих по-лесен вариянт от сесии и криптирания а именно sort()
подрежда думите по азбучен ред :lol:
+1 за помощта защото ти ми даде идеите,но пак казвам сори,че те измъчих да пишеш толкова кодове. :) :?:
 

Back
Горе