Currently I’m stuck and lost with trying to remove empty arrays from a csv file and actually don’t understand how I’m pulling up an empty array. I’m pulling 5 random rows from a csv file which works but I keep getting only 1 blank array after a shuffle.
My output:
JavaScript
x
var cardDeck = [{
'image':'',
'year':'',
'hint':'',
'caption':''
}
, {
'image':'<img class="card_image" src="https://www.floridamemory.com/onlineclassroom/game/cards/1586.png">',
'year':'1586',
'hint':'Sir Francis Drake attacks Saint Augustine',
'caption':'On May 28 and 29, 1586, Sir Francis Drake led an attack on the Spanish city of St. Augustine. The Englishman commanded a fleet of 25 ships commissioned by Queen Elizabeth to conduct a series of raids against Spanish settlements in the Americas. <a href="https://www.floridamemory.com/blog/2012/05/29/francis-drake-attacks-st-augustine/" target="_blank">Read More</a>'
}
, {
'image':'<img class="card_image" src="https://www.floridamemory.com/onlineclassroom/game/cards/1926.png">',
'year':'1926',
'hint':'Great Miami Hurricane',
'caption':'A catastrophic hurricane made landfall near Miami Beach in the early morning hours of September 18, 1926. Known as the "Great Miami Hurricane," the storm cut a path of destruction across Southern Florida. <a href="https://www.floridamemory.com/exhibits/floridahighlights/hurricane/" target="_blank">Read More</a>'
}
, {
'image':'<img class="card_image" src="https://www.floridamemory.com/onlineclassroom/game/cards/1969.png">',
'year':'1969',
'hint':'First humans on the Moon',
'caption':'On July 20, 1969, Commander Neil Armstrong and Lunar Module Pilot Edwin "Buzz" Aldrin, Jr. landed in the Sea of Tranquility and became the first humans to walk on the moon <a href="https://www.floridamemory.com/onlineclassroom/nasa/photos/" target="_blank">Read More</a>'
}
, {
'image':'<img class="card_image" src="https://www.floridamemory.com/onlineclassroom/game/cards/1822.png">',
'year':'1822',
'hint':'Territory of Florida Established',
'caption':'This first act of Florida's Territorial Legislature in 1822 divided the territory into four counties and established local courts. <a href="https://www.floridamemory.com/exhibits/floridahighlights/s222/" target="_blank">Read More</a>'
}
];
After looking around I thought array_map and array_filter would work but it clears my whole array
JavaScript
$r= array_map('array_filter', $r);
$r= array_filter( $r);
My code:
JavaScript
<?php
$rows = file('Book1.csv');
$len = count($rows);
$rand = array();
$yearOutput = array(); //array to echo each year individually for future use
while (count($rand) < 5) {
$r = rand(0, $len);
if (!in_array($r, $rand)) {
$rand[] = $r;
}
}
$comma = 1;
$count = count( $rand );
echo 'var cardDeck = [';
foreach ($rand as $r) {
$csv = $rows[$r];
$data = str_getcsv($csv);
echo "{n";
echo "'image':'".$data[1]."',n";
echo "'year':'".$data[0]."',n";
echo "'hint':'".$data[3]."',n";
echo "'caption':'".$data[2]."'";
echo "n}n";
if ( $comma < $count ) echo ", "; //adds comma after last ending brace
++$comma; //adds comma after last ending brace
if (!in_array($data[0], $yearOutput)) {
$yearOutput[] = $data[0];
sort($yearOutput);
}
}
echo "];";
Advertisement
Answer
Decided to not go furter with using PHP arrays, just going to call it using js arrays