Autor Zpráva
stepanka
Profil *
Místo "setřídit" by se spíš hodilo "setřepat".. Jinými slovy bych potřebovala z pole

Array ( [1] => abc [2] => cde [4] => efg [5] => ghi [6] => ijk)


udělat pole

Array ( [0] => abc [1] => cde [2] => efg [3] => ghi [4] => ijk)


Prošla jsem si na php.net různé funkce %sort%, ale tohle tam není... Existuje na to něco, nevěděl by někdo?

Moc děkuju.
tiso
Profil
stepanka: „ale tohle tam není...
Niektoré funkcie po zoradení nezachovávajú pôvodné kľúče, takže to robí presne to čo chceš, viď napríklad http://cz2.php.net/manual/en/function.sort.php a čítaj prvú note.
Kvôli čomu to vlastne npotrebuješ? Nevidím pre to "setřepání" dôvod.
Taps
Profil
stepanka
zkus
$pole=array("1"=>"abc","2"=>"cde","4"=>"efg","5"=>"ghi","6"=>"ijk");
$pole=array_values($pole);
print_r($pole);
stepanka
Profil *
Omlouvám se, můj první dotaz nebyl správný. Vaše dvě odpovědi mě dovedly k tomu, že tohle moji situaci nevyřeší. Ještě jednou se omlouvám a oběma děkuju za reakci.

Potřebovala bych teda něco jiného - zjistit nejvyšší index z pole. To znamená, aby můj první kód vypsal číslo 6, druhý kód číslo 4. Našla jsem akorát řešení pro PERL, ale pro PHP ne.. Nevěděl by někdo?
tiso
Profil
stepanka: stále mi chýba ten dôvod prečo to potrebuješ...
Nox
Profil
krsort a key...není to zrovna nejefektivnější, ale nenapadá mě nic jiného co by fungovalo i při proházených prvcích
SwimX
Profil
stepanka:
$pole=array("1"=>"abc","2"=>"cde","4"=>"efg","5"=>"ghi","6"=>"ijk");
$pole=array_values($pole);
$posledni = array_pop($pole);
echo $posledni;


araray pop ale vyřízne poslední věc z pole, takže pole $pole bude pak mít už jen 4 prvky.
tiso
Profil
SwimX: ale stepanka chcela key, nie value...
stepanka
Profil *
tiso

Nevím, jestli to dostatečně vysvětlím, ale dejme tomu, že mám tedy pole

$pole = array (1 => "abc", 2 => "cde", 4 => "efg", 5 => "ghi", 6 => "ijk");


které chci vypsat. Vypisuju ho takhle:
		for ($i=0; $i<count($pole); $i++)
			{
			echo $pole[$i].'<br />';
			}


Jenže tento příklad mi vyhodí
abc
cde

efg


což nejsou všechny hodnoty. Proto mi pomůže ten maximální index. Zjistím ho, a projdu celé pole, pokud bude existovat hodnota, vypíšu ji.
tiso
Profil
stepanka: nepoužívaj cyklus for ale cyklus foreach:
foreach($pole as $value){
  echo $value.'<br />';
}

a pokiaľ potrebuješ pracovať s kľúčmi:
foreach($pole as $key => $value){
  //robim nieco s key a value aktualneho prvku
}
SwimX
Profil
//píšu pomalu, problémn vyřešen jinak :)
karbon
Profil *
Pokud dobře chápu problém, tak by mělo stačit něco takového:
$max = 0;
foreach($pole as $k => $v){
  if($k > $max){
    $max = $k;
  }
}

Pokud jsem špatně pochopil zadání, tak se omlouvám.
stepanka
Profil *
tiso
Super, děkuju.. už nějakou dobu si hraju s FORem, a foreach mi úplně vypadl z hlavy. Takhle to funguje úplně bez problému. Jsem tele, že mě to nenapadlo.

I ostatním díky za reakce.

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