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)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
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
*/
?>
//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
Maar je kunt ook heel de code tot en met regel zes weghalen en daarvoor in de plaats zetten:
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)
1
2
3
4
5
2
3
4
5
<?php
echo '<pre>';
print_r(array_unique(array(10, 10, 20, 30, 40, 40, 50)));
echo '</pre>';
?>
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
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
Toevoeging op 02/02/2015 22:46:50:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
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 />";
}
?>
//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?
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)
1
2
3
4
5
6
7
8
9
10
11
12
13
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];
}
?>
//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] ....
foreach() of count($test).
Dat is toch geen probleem?
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...
In ieder geval kun je een array gewoon kopiëren zoals iedere andere variabele.
Verder kun je ook array elementen in een variabele kopiëren:
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).
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)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
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];
?>
$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
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
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>';
?>
$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)
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
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>
$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
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)
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
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>";
} ;
}
?>
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