array count values

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Chris Bosmans

chris Bosmans

02/02/2015 22:28:37
Quote Anchor link
ik heb een array, en hiervan heb ik de unieke velden geteld met array_count_values.
nu krijg ik deze perfect met een for each zichtbaar onder elkaar,
maar is er ook een manier om deze unieke velden en de value te bewaren in een aparte variabele zodat je die
ergens anders nog eens kunt gebruiken in je script

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<?php
//array
$idhrm_q='10-10-20-30-40-40-50';

//splits mijn var in aparte stukken zonder het "-"
$var=explode("-",$idhrm_q);
    
//aantal unieke idh vind in in de array
$newArray = array_count_values($var);
foreach ($newArray as $key => $value)
{

echo $key. " - ". $value." <br />";
}


/*nu geeft hij in de echo
10 - 2
20 - 1
30 - 1
40 - 2
50 - 1

hoe kan ik nu deze 10,20,... apart in een variabele steken en ergens anders op mijn pagina apart gebruiken
*/

?>


moet ik deze terug in een for loop steken?
Gewijzigd op 02/02/2015 22:34:44 door Chris Bosmans
 
PHP hulp

PHP hulp

05/11/2024 13:38:09
 
Frank Nietbelangrijk

Frank Nietbelangrijk

02/02/2015 22:31:55
Quote Anchor link
regel twee zou je moeten veranderen naar:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
$idhrm_q
='10-10-20-30-40-40-50';
?>


Maar je kunt ook heel de code tot en met regel zes weghalen en daarvoor in de plaats zetten:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
$var
= array(10, 10, 20, 30, 40, 40, 50);
?>



Toevoeging op 02/02/2015 22:36:51:

en daarna kun je array_unique() gebruiken om jouw doel te bereiken als je het mij vraagt.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php
echo '<pre>';
print_r(array_unique(array(10, 10, 20, 30, 40, 40, 50)));
echo '</pre>';
?>
Gewijzigd op 02/02/2015 22:33:16 door Frank Nietbelangrijk
 
Chris Bosmans

chris Bosmans

02/02/2015 22:37:52
Quote Anchor link
Hey Frank merci
maar even voor de duidelijkheid, ik heb even fictieve getallen in die $idhrm_q geplaatst om het probleem uit te leggen
normaal heb ik lijn 1-6 nodig voor mijn variabelen te trekken. dit werkt

het is voor de count array waar ik niet goed weet hoe ik verder moet
 
Frank Nietbelangrijk

Frank Nietbelangrijk

02/02/2015 22:38:50
Quote Anchor link
levert op:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
Array
(
    [0] => 10
    [2] => 20
    [3] => 30
    [4] => 40
    [6] => 50
)


Toevoeging op 02/02/2015 22:46:50:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?php
//array
$idhrm_q='10-10-20-30-40-40-50';

//splits mijn var in aparte stukken zonder het "-"
$var=explode("-",$idhrm_q);
    
//aantal unieke idh vind in in de array
$newArray = array_unique($var);
foreach ($newArray as $key => $value)
{

echo $key. " - ". $value." <br />";
}


?>


zo dan?
 
Chris Bosmans

chris Bosmans

02/02/2015 23:05:34
Quote Anchor link
uw manier met array unique werkt perfect.
ik krijg mijn unique value te zien die ik kan oproepen door
echo $var[0];
echo $var[1];
enz

maar als je met een onbekende aantal variabele in je array hebt (hier in het voorbeeld is het gefixd)
hoe los je dit dan best op met onderstaand?
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
<?php
//zijn het totaal aantal variabelen)
$p=count($var);

//de oplossing voor ze terug in aparte variabelen te zetten
$test=array_unique($var);

//de loop op ze allemaal te echoen
for ($a=0; $a <= $p+1;$a++)
{

echo $test[$a];
}

?>


maar dan kom ik terug op het probleem dat ik niet weet hoeveel $a ik zal hebben welke $test[0] en $test[1] ....
 
- SanThe -

- SanThe -

02/02/2015 23:21:36
Quote Anchor link
foreach() of count($test).
 
Frank Nietbelangrijk

Frank Nietbelangrijk

03/02/2015 00:00:30
Quote Anchor link
>> maar dan kom ik terug op het probleem dat ik niet weet hoeveel $a ik zal hebben welke $test[0] en $test[1] ....

Dat is toch geen probleem?

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
<?php

foreach($test as $value) {
    echo $value . '<br>';
}


?>
 
Chris Bosmans

chris Bosmans

03/02/2015 00:37:29
Quote Anchor link
Ja ok akkoord, maar ik wil de bekregen variabelen apart bewaren in een nieuwe variabele.
zodat ik deze over de hele pagina kan gebruiken. En niet alleen in de for each loop

De bedoeling is dat die uiteindelijk in een tabel komen met nog andere data, die via een andere query komen.

Dus moet de bekomen waarde terug opslaan in een var die vast is en vasthangt aan een while,for each loop

Dus iets in het genre var1= test [0], var2= test [1] enz...
 
Frank Nietbelangrijk

Frank Nietbelangrijk

03/02/2015 09:59:11
Quote Anchor link
Je denkt nog een beetje te moeilijk Chris. Ik denk omdat je nog niet zo veel met array's gewerkt hebt voelt het nog erg onwennig aan voor je, hetgeen logisch is.

In ieder geval kun je een array gewoon kopiëren zoals iedere andere variabele.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
<?php

$a
= array(1, 2);
$b = $a;

foreach($b as $c) {
    echo $c . '<br>';
}


?>


Verder kun je ook array elementen in een variabele kopiëren:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
<?php

$a
= array(3, 4);
$b = $a[0];

echo $b . '<br>';

?>


Verder kan ik helaas niet zo veel met hetgene je schrijft omdat er weinig concreets in staat. (misschien is wat meer uitleg waarover het gaat makkelijker).
 
Chris Bosmans

chris Bosmans

04/02/2015 20:37:14
Quote Anchor link
ok, begin het beetje te snappen, ik heb idd nog niet veel ervaring met arrays.
ik zal mijn verhaal wat te vervolledigen

"gegevens"
persoon produceert een product met een bepaalde grondstof en doet er XX minuten over.
die persoon kan elke dag een product maken (zelfde of ander) met zelfde of ander grondstof en ook de tijden kunnen varieren

nu wil ik een rapport maken (lijst tonen) waar als je de persoon selecteert, in de lijst een totaalbeeld geeft van
dat zijn de grondstoffen (unieke) die die persoon heeft gebruikt en hij heeft in totaal zolang met die grondstof gewerkt

dus in het kort

voor persoon X

grondstof //// aantal keer ///// totaaltijd

nr1 ///// 5 ///// 100
nr2 ///// 2 ///// 50
nr3 ///// 1 ///// 120
nr4 ///// 2 ///// 100

nu heb ik al met bovenstaande hulp de data beschikbaar in een array (array_unique) en het aantal keer dat hij die gebruikt heeft (array_count_values)

maar nu moet ik die in een tabel vorm gieten
deze lijst kan voor een andere persoon helemaal anders er uit zien. (minder verschillende grondstoffen, aantal keer gebruikt,enz.

nu ben ik bovenstaande informatie in mijn tabel aan het verwerken.
enigste waar ik mij nog wat op moet verduidelijken is dat ik niet weet tot hoeveel $b[0] kan lopen (hangt af van het aantal grondstoffen) in het voorbeeld is dat tot $b[3]

4 unieke grondstoffen

hoe kan ik dan best dit zelf laten berekenen door het script

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<?php
$newArray
= array_count_values($var);
foreach ($newArray as $b=> $test)
{

echo $b. "-". $test." <br />";
}



//kijg ik als resultaat

//nr1-5
//nr2-2
//nr3-1
//nr4-2
//dus ik kan deze vast leggen als

$grondstof1=$b[0];
$grondstof2=$b[1];
$grondstof3=$b[2];
$grondstof4=$b[3];
?>


maar voor een andere persoon kan dat maar 2 unieke grondstoffen zijn dus [0] en [1] nog een andere tot bijv [8]
hoe kan ik dat dat mooi in een tabel gieten, is het mogelijk om die [0] te laten bereken
door aantal unieke grondstoffen??

ik heb nog wat opzoek werk :-)

tis misschien wat moeilijk uitgelegd, hopelijk snap je het nu wat meer
Gewijzigd op 04/02/2015 21:02:51 door chris Bosmans
 
Frank Nietbelangrijk

Frank Nietbelangrijk

04/02/2015 23:12:17
Quote Anchor link
Misschien heb je hier wat aan?
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
<?php
$newArray
= array_count_values($var);
foreach ($newArray as $b=> $test)
{

    $grondstof[] = $test; // voeg een nieuw element toe aan de array $grondstof
}

// onderstaande code laat de inhoud van je complete array zien. Makkelijk tijdens het programmeren:
echo '<pre>';
print_r($grondstof);
echo '</pre>';
?>


Toevoeging op 04/02/2015 23:20:11:

Wacht even.. ik denk dat ik jouw gedachtenkronkel begin te snappen :p

Jij maakt je zorgen om hoe je dit tussen je HTML moet zetten!

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
<?php

$newArray
= array_count_values($var);

?>

<!DOCTYPE html>
<html>
    <head>
        <title>test</title>
        <meta charset="UTF-8">
    </head>
    <body>
        <table>
            <tr>
                <th>regel</th>
                <th>waarde</th>
            </tr>
            <?php
                $i
= 1;
                foreach($newArray as $value)
                {

                    echo '<tr><td>' . $i . '</td><td>' . $value . '</td></tr>';
                    $i++;
                }

            ?>

        </table>
    </body>
</html>
Gewijzigd op 04/02/2015 23:31:18 door Frank Nietbelangrijk
 
Chris Bosmans

chris Bosmans

06/02/2015 22:21:54
Quote Anchor link
ja inderdaad, dank voor de extra toevoeging
ik had het ondertussen ook uitgedokterd :-)

nu dat is achter de rug en ik begin het wat te snappen.

nu ik een stap verder ben heb ik nog een tof akkefietje tegengekomen waar ik nog niet goed weet hoe ik het moet oplossen

foto
in de foto kan je zien dat voor 2 en 3 item er 5 batches zijn
in de laatste kolom moet hij normaal alle tijden optellen van die batchen, dus 450 batch1 / 60 batch 2/ ...in totaal moet het 6 tijden optellen voor lijn 2 zou ik graag 1860 zien staan

ik zou dit nu als 1 getal hebben staan en niet die 5 waarden achter elkaar
dit is de code
met array_sum lukt het me niet
als er maar 1 batch is geen probleem rekent hij alles mooi uit.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
<?php
foreach ($newArray as $cmt_idhnr=> $aantalbatch_CMT)
{


if (!empty($cmt_idhnr)) {echo "<td align='center' class='styleborder'>";
       $tijd_cmt =("SELECT
C.TIJD_RM1_P1,C.TIJD_RM1_P2,C.TIJD_RM1_P3, C.TIJD_RM2_P1, C.TIJD_RM2_P2, C.TIJD_RM2_P3, C.TIJD_RM3_P1, C.TIJD_RM3_P2, C.TIJD_RM3_P3,    C.TIJD_RM1_V1, C.TIJD_RM1_V2, C.TIJD_RM1_V3, C.TIJD_RM2_V1, C.TIJD_RM2_V2, C.TIJD_RM2_V3, C.TIJD_RM3_V1, C.TIJD_RM3_V2, C.TIJD_RM3_V3,
C.OP_P_1_G1, C.OP_P_2_G1, C.OP_P_3_G1, C.OP_P_1_G2, C.OP_P_2_G2, C.OP_P_3_G2, C.OP_P_1_G3, C.OP_P_2_G3, C.OP_P_3_G3, C.OP_V_1_G1, C.OP_V_2_G1, C.OP_V_3_G1, C.OP_V_1_G2, C.OP_V_2_G2, C.OP_V_3_G2, C.OP_V_1_G3, C.OP_V_2_G3, C.OP_V_2_G3,
C.IDH_RM1, C.IDH_RM2, C.IDH_RM3,
C.RS_NR_BLOOT,
B.RS_NR,
DATE_FORMAT(B.DOM,'%d.%b.%Y')AS new_DATUM_DOM
FROM bloot AS C LEFT JOIN rs AS B
ON B.RS_NR=C.RS_NR_BLOOT
WHERE  ((B.DOM BETWEEN '$dom' AND '$exp' ) AND (C.IDH_RM1='cmt_idhnr' OR C.IDH_RM2='cmt_idhnr' OR C.IDH_RM3='cmt_idhnr')) AND(C.OP_P_1_G1='$operator' OR C.OP_P_2_G1='$operator' OR C.OP_P_3_G1='$operator' OR C.OP_P_1_G2='$operator' OR C.OP_P_2_G2='$operator'OR C.OP_P_3_G2='$operator' OR C.OP_P_1_G3='$operator' OR C.OP_P_2_G3='$operator' OR C.OP_P_3_G3='$operator' OR C.OP_V_1_G1='$operator' OR C.OP_V_2_G1='$operator' OR C.OP_V_3_G1='$operator' OR C.OP_V_1_G2='$operator' OR C.OP_V_2_G2='$operator' OR C.OP_V_3_G2='$operator' OR C.OP_V_1_G3='$operator' OR C.OP_V_2_G3='$operator' OR C.OP_V_3_G3='$operator' )"
);

$q_tijd_cmt = mysql_query($tijd_cmt) or die (mysql_error());  
while ($row_tijd_cmt = mysql_fetch_array($q_tijd_cmt))        
{

    $G1_OPP1=$row_tijd_cmt['OP_P_1_G1'];
    $G1_OPP2=$row_tijd_cmt['OP_P_2_G1'];
    $G1_OPP3=$row_tijd_cmt['OP_P_3_G1'];
    $G2_OPP1=$row_tijd_cmt['OP_P_1_G2'];
    $G2_OPP2=$row_tijd_cmt['OP_P_2_G2'];
    $G2_OPP3=$row_tijd_cmt['OP_P_3_G2'];
    $G3_OPP1=$row_tijd_cmt['OP_P_1_G3'];
    $G3_OPP2=$row_tijd_cmt['OP_P_2_G3'];
    $G3_OPP3=$row_tijd_cmt['OP_P_3_G3'];
    $G1_OPV1=$row_tijd_cmt['OP_V_1_G1'];
    $G1_OPV2=$row_tijd_cmt['OP_V_2_G1'];
    $G1_OPV3=$row_tijd_cmt['OP_V_3_G1'];
    $G2_OPV1=$row_tijd_cmt['OP_V_1_G2'];
    $G2_OPV2=$row_tijd_cmt['OP_V_2_G2'];
    $G2_OPV3=$row_tijd_cmt['OP_V_3_G2'];
    $G3_OPV1=$row_tijd_cmt['OP_V_1_G3'];
    $G3_OPV2=$row_tijd_cmt['OP_V_2_G3'];
    $G3_OPV3=$row_tijd_cmt['OP_V_3_G3'];

$idhrm1=$row_tijd_cmt['IDH_RM1'];
$idhrm2=$row_tijd_cmt['IDH_RM2'];
$idhrm3=$row_tijd_cmt['IDH_RM3'];
if (($cmt_idhnr==$idhrm1)&&(($operator==$G1_OPP1)||($operator==$G1_OPP2)||($operator==$G1_OPP3)||($operator==$G2_OPP1)||($operator==$G2_OPP2)||($operator==$G2_OPP3)||($operator==$G3_OPP1)||($operator==$G3_OPP2)||($operator==$G3_OPP3)||($operator==$G1_OPV1)||($operator==$G1_OPV2)||($operator==$G1_OPV3)||($operator==$G2_OPV1)||($operator==$G2_OPV2)||($operator==$G2_OPV3)||($operator==$G3_OPV1)||($operator==$G3_OPV2)||($operator==$G3_OPV3) )) {
echo $row_tijd_cmt['TIJD_RM1_P1']+$row_tijd_cmt['TIJD_RM1_P2']+$row_tijd_cmt['TIJD_RM1_P3']+$row_tijd_cmt['TIJD_RM1_V1']+$row_tijd_cmt['TIJD_RM1_V2']+$row_tijd_cmt['TIJD_RM1_V3']."/"; }    

 echo"</td>";    
    
    
    } ;
}

?>


iemand idee?
Gewijzigd op 06/02/2015 22:43:50 door chris Bosmans
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.