Waarde uit een array verwijderen

Status
Niet open voor verdere reacties.

ErikBooy007

Terugkerende gebruiker
Lid geworden
24 mei 2007
Berichten
3.814
Ik ben met een projectje voor school bezig, waar ik een systeem maak om je gehaalde cijfers te beheren.

Nu heb ik dit als volgt gedaan. Alle cijfers komen in een array. Door implode(); te gebruiken, maak ik hier een string van en stop ik deze in de database.

Dan kan ik hem er weer uithalen en er weer een array van maken, zodat ik ermee kan werken en dergelijke en dat is allemaal geen enkel probleem.

En nu komt het probleem. Ik wil graag een waarde uit deze array kunnen verwijderen.

Ik heb daarvoor de volgende functie gebruikt:

PHP:
		global $connection;
		$sql = "SELECT * FROM `cijfers` WHERE `vak`='" . $vak . "'";
		$result = mysql_query($sql, $connection);
		$row = mysql_fetch_array($result, MYSQL_BOTH);
		$cijfers = $row[$type];
		$cijferArray = explode(',', $cijfers);
		if(isset($_POST['submitso'])){
			$number = $_POST['so'];
		} elseif (isset($_POST['submitpw'])){
			$number = $_POST['pw'];
		} else {
			$number = $_POST['pta'];
		}
		$arrayLength = count($cijferArray);
		for($i = $number - 1; $i < $arrayLength; $i++){
			$j = $i + 1;
			$cijferArray[$i] = $cijferArray[$j];
		}	
		$cijferString = implode(',', $cijferArray);
		$sql2 = "UPDATE `cijfers` SET so='" . $cijferString . "' WHERE vak='" . $vak . "'";
		echo $sql2;
		mysql_query($sql2, $connection) or die(mysql_error());

Ik zal deze even verklaren:

$cijferArray is de array met alle cijfers van een bepaald type (so / pw / pta)
submitso / submitpw / submitpta zijn de namen van de submit buttons in het formulier waar je de cijfers om te verwijderen kunt kiezen.
$number is de key van de waarde in de array.

Wat is nu het probleem? Het werkt niet zoals ik wil. Er komen allerlei lege waardes in de array terecht en er staan overal nog komma's die nog weg moeten.

Kan iemand me helpen? Doe ik veel te moelijk om een waarde uit de array te verwijderen? Bestaat daar ook een ingebouwde functie voor?

Alvast bedankt!!
 
Ik snap even niet welke waarden je in je array krijg, want ik kan het hier even niet reproduceren Door de volgende regels:
PHP:
$sql = "SELECT * FROM `cijfers` WHERE `vak`='" . $vak . "'";
$result = mysql_query($sql, $connection);
$row = mysql_fetch_array($result, MYSQL_BOTH);
$cijfers = $row[$type];
$cijferArray = explode(',', $cijfers);
krijg ik maar 1 waarde in mijn array.
Maar uiteindelijk moet je zelf een functie maken om het eea te verwijderen uit je array.
Er is natuurlijk wel een oplossing om het eea te benaderen:
PHP:
$sql = "SELECT * FROM `cijfers` WHERE `vak`='" . $vak . "' AND where vak is NOT NULL";
of zoiets
een mogelijkheid die ik gebruik en zeker niet wordt ondersteund door latere versies van PHP is de volgende functie om een lege waarden uit een array te halen:
PHP:
function cleanArray($array)
{
	foreach ($array as $index => $value)
	{
		if (empty($value)) unset($array[$index]);
	}
	return $array;
}
Eerlijk gevonden op PHP.net.
Maar als je eens een deel van je array plaats en aangeef wat je wil verwijderen kunnen we eens kijken wat je bedoel
 
Laatst bewerkt:
Het punt is niet hoe ik de waarden uit de database haal.

Ik kan me voorstellen dat jij geen waarden in je array krijgt omdat je waarschijnlijk niet dezelfde opbouw/inhoud in je database hebt.

Maar ik heb dus al de array en het enige punt is om de waarde te verwijderen. En het is geen lege waarde, het is gewoon een cijfer.

Dit is mijn array voordat de functie werkt:

Array ( [0] => 45 [1] => 87 [2] => 35 [3] => 65 [4] => 48 [5] => 53 [6] => 45 [7] => 45 [8] => 85 [9] => 96 [10] => 21)

Naderhand is dit de array:

Array ( [0] => 45 [1] => 35 [2] => 65 [3] => 48 [4] => 53 [5] => 45 [6] => 85 [7] => 96 [8] => 21 [9] => [10] => )

Ik zat al te denken aan iets van een split-functie die volgens mij wel voor arrays bestaat. Dan van een van die arrays de eerste of laatste waarde 'afknippen' dat ga ik nog even proberen zo gauw weer wat tijd heb.

P.S. Dat zijn niet mijn echte cijfers hoor ;)
 
Laatst bewerkt:
Geeft dus eens een stukje van je array en geef eens aan wat je verwijderd wil hebben met welke sleutel. Want zo lijkt het meer op schieten in het duister.
Maar ik denk dat je het beste kan kijken in de richting als een foreach functie in PHP
PHP:
foreach($cijferArray] as $key => $value)
{
zoek key met waarde en verwijder
}
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan