Ik ben aan het stoeien met arrays. Ik wil aan een 2 dimensionele array een derde dimensie toevoegen als in een waarde van een array meerdere namen voorkomen.
Het lukt mij om deze namen er uit te filteren, maar het lukt niet om een extra dimenstie toe te voegen aan de array. Als de array (structuur) wordt uitgelezen blijkt dat er nog steeds sprake te zijn van een twee dimensionele array.
Bovenaan in het programma (kopje out array), in de vorm van commentaar, is de structuur opgenomen zoals het zou moeten worden.
Uiteindelijk gaat dit programman onderdeel worden van een groter geheel waar in een csv file wordt uitgelezen.
Wat moet er veranderd worden?
<?
// input array
$activiteit[0][0] = 4;
$activiteit[0][1] = "Ja";
$activiteit[0][2] = "40 uur";
$activiteit[0][3] = "Erwin";
$activiteit[1][0] = 5;
$activiteit[1][1] = "Ja";
$activiteit[1][2] = "4 uur";
$activiteit[1][3] = "Erwin,Jan,Maarten";
// output array
// $activiteit[0][0] = 4;
// $activiteit[0][1] = "Ja";
// $activiteit[0][2] = "40 uur";
// $activiteit[0][3] = "Erwin";
// $activiteit[1][0] = 5;
// $activiteit[1][1] = "Ja";
// $activiteit[1][2] = "4 uur";
// $activiteit[1][3][0] = "Erwin";
// $activiteit[1][3][1] = "Jan";
// $activiteit[1][3][2] = "Maarten";
$aantal = count($activiteit);
foreach($activiteit as $regel => $rij)
{
foreach( $rij as $kolom => $waarde)
{
echo "regel ". $regel. " kolom ". $kolom. " waarde ". $waarde. "<br>";
if ($kolom == 3)
{
$resources = explode(",", $waarde);
$aantal_resources = count($resources);
if ($aantal_resources !== 1) // als in de string meerder namen voorkomen (gescheiden door komma's)
{
// echo $aantal_resources. "<br>";
for ($teller = 1; $teller <= $aantal_resources; $teller++) // maak voor elke naam een array aan
{
$extra_dimensie = $teller - 1;
echo "regel " . $regel;
echo " kolom " .$kolom;
echo " extra dimensie ". $extra_dimensie;
echo " resoure ". $resources[$extra_dimensie]. "<br>";
$activiteit[$regel][$kolom][$extra_dimensie] = $resources[$extra_dimensie];
echo "nieuwe waarde in array: ". $activiteit[$regel][$kolom][$extra_dimensie] . "<br>";
}
} // endif ($aantal_resources !== 1)
} // ($kolom == 3)
} // foreach( $rij as $kolom => $waarde)
} // foreach($activiteit as $regel => $rij)
preprint($activiteit);
// USAGE: preprint($x); <- where $x = array()
function preprint($s, $return=false)
{
$x = "<pre>";
$x .= print_r($s, 1);
// $x .= print_r(array_keys($s), 1);
$x .= "</pre>";
if ($return) return $x;
else print $x;
}
?>
1.957 views