21. září bude sraz! Od 18.00 v restauraci Tradice v Praze u Anděla
Autor Zpráva
snazimse
Profil
Zdravím všechny,

řeším takovou věc možná né úplně běžnou, nakonec jsem ji vyřešil jinak v předhozích operacích nějak standartně.

Nicméně uvažuji na jiných řešeních. Jak to udělat.

Potřeboval od Vás znalých php, poradit.

Lze v php, při jakékoliv smyčcce se odkázat v paměti (skokem) na předchozí hodnotu při průchodu polem a porovnávat je?
Bez průchodu bych to udělal pomocí array_shift, ale s průchodem, kdy jsou to již samostatné hodnoty, cyklu?
Pak složitěji vysortovat jedno pole, a podle toho jak se změnilo srovnat i další vnořené pole, jde to?

Příklad něco takového, ale bez čísel, není funkční jen demonstrativní ukázka:
$variables = array("1","2","3");

foreach ($variables as $key => $variable) {
   
echo (int)$variable-1 < (int)$variable ? false : list(something);
}

V reálu mi jde o tohle:
$plunge_array = array('global' => array('ids' => array('60','30','40'),'names' => array('Petr','Robert','Pavel')));
//Dostanu zanořené pole

$array_ids = $plunge_array["global"]["ids"];

// provizorně seřadím
sort($array_ids);

//Teď bych potřeboval, to staré pole $plunge_array porovnavat s novým polem idček a podle toho jak byli předtím přesortovat(přeskupit) celé pole v tomto případě, by se mělo změnit vnořené pole names na array('Robert','Pavel','Petr')

Lze to vůbec nějak, jak to provést, laicky řečeno. Prostě dostanu takové zanořené pole, jestli z databáze ,nebo jinak
to je jedno, jak to nejlépe provést? Jestli s cyklem, či bez, jak by jste to řešili? V cyklu nemůžu použít přímo funkci sort().

Možná to udělat nějak, že bych přeskakoval, všechny položky nějak paralelně, podle nějakého sortu jednoho pole.
Každopádně vyřešil jsem to jinak ,nemyslím tohle, ale to pole něž k této akci, by mělo dojít. Dá se to nějak rozumně provést? Nebo je to spíše trochu sci-fi v běžném kontextu?

Zjednodušeně:
Jde v podstatě o to vysortovat si jedno pole, ale aby se zároveň podle pravidel toho nového pole rekurzivně změnila pravidla v zanořených polích ostatních tzn: přehození dle toho jak se změnilo právě to jedno vysortované pole.

Přiznám se, že vůbec netuším reálně jak na to.

Děkuji všem velmi za reakce!
tiso
Profil
Na toto sa používa funkcia usort(), s užívateľsky definovanou zoraďovacou funkciou. Dostaneš zoradené pole podľa svojich kritérií.
snazimse
Profil
tiso:

O funkci jsem slyšel, zatím nevyužil, ale nevím, jestli zvládne tohle co chci? Jasně, že zvládne vlastní řazení podle vlastního klíče, ale dokáže zpětně porovnat pole na základě změného vztahu pole, rekurzivně. A prakticky těch vnořených polí, tam bude více, které se musí změnit. Myslím, že to nebude tak jednoduché. Možná, kdybych vytvořil nějaký složitý algoritmus, tak by to šlo, ale to asi nebude nic praktického.

Díky!
tiso
Profil
Sorry, zle som si pozrel to pole, správna funkcia je array_multisort
snazimse
Profil
tiso:

To vypadá, velmi dobře to jsem nečekal, že něco takového existuje v php prostuduji. Použil jsi to někdy? Díky moc!

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0