Autor Zpráva
hal_sk
Profil
Zdravím,
mám pole:
$ovocie=array("jablko","banan","hrozno","hruska","hrozno");


1) Potrebujem zistiť koľko krát sa tam nachádza to hrozno (2 krát).

2) Keďže v poli sú 2 ovocia "hrozno" (s indexom 2 a 4) potreboval by som zistiť aj to, koľké "hrozno" daný index predstavuje, čiže v tomto prípade pre
$ovocie[2];
to bude 1 a pre
$ovocie[4];
to bude 2 (hodnota na indexe 4 je už druhé "hrozno" v poli).

Sorry za tento mizerný popis problému, nenapadlo ma nič lepšie.
Taps
Profil
hal_sk:
napadlo mě toto
1)
$ovocie=array("jablko","banan","hrozno","hruska","hrozno");

foreach($ovocie as $o)
{
if($o=='hrozno') $pocet[]=$o;
}

echo 'Počet: '.count($pocet);


2.
$ovocie=array("jablko","banan","hrozno","hruska","hrozno");
$key = array_keys($ovocie,'hrozno');
print_r($key);
lordfrikk
Profil
<?php

$ovocie=array("jablko","banan","hrozno","hruska","hrozno","banan","banan","banan");

function arrayCountValuesEx($array)
{
	$aRetArray = array();
	$aCntArray = array();
	
	foreach ($array as $key => $value)
	{
        if (!$aCntArray[$value])
            $aCntArray[$value]     = 1;
        else
            $aCntArray[$value]     = ++$aCntArray[$value];
		    
        $aRetArray[$key] = $aCntArray[$value];       
	}
	return $aRetArray;
}

var_dump(arrayCountValuesEx($ovocie));

?>
__construct
Profil
hal_sk:
ten prvý problém sa dá jednoduchšie riešiť, bez nejakých iterácií takto:

$ovocie = array("jablko","banan","hrozno","hruska","hrozno");

function pocet($pole = array(), $polozka = null)
{
    $tmp = array_count_values($pole);
    return (isset($tmp[$polozka])) ? $tmp[$polozka] : 0;
}

echo "<pre>";
var_export(pocet($ovocie,'hrozno')); // vráti '1'
petr 6
Profil
Na ten první problém dokonce existuje v php funkce array_count_values
hal_sk
Profil
Dík vštetkým, hlavne lordfrikk-ovi. Pomohlo.

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: