Ik heb twee arrays, ik wil array1 vergelijken met array2 via de functie array_diff. Ik heb mijn arrays opgebouwd d.m.v. een explode(), dit ziet er als volgt uit.


<?php
$this->aAddColumns = explode(",",trim("ID,Naam,Achternaam,Plaats"));
$this->aRemColumns = explode(",",trim("Naam,Plaats"));

private function getColumns() {
    array_diff($this->aAddColumns, $this->aRemColumns);
}
?>


Maar helaas mocht het niet zo makkelijk zijn, array_diff doet helemaal niets met de aangeleverde arrays. Als ik in de functie zelf gewoon twee arrays aanmaak ($array = array("..","..");) dan doet hij het overigens wel. Ik heb al een aantal alternatieve functies geprobeerd op te zetten die dit voor mij doen, maar op één of andere manier reageren array functies nogal raar op een explode, of ik maak natuurlijk een gigantisch grote programmeerfout ;).

Alvast bedankt,
Groet Joost.

Al gekeken met echo of print_r of de aangeleverde arrays wel een array zijn ?
Ja, het zijn allebei arrays.

Groet, Joost.
@Joost

Hoe definieer je die variabelen in je class? Als je ze gewoon zo aanmaakt als dat je nu doet, moet je ze meegeven in je function tussen ( en ) .
Robert_Deiman schreef op 16.06.2008 12:05
@Joost

Hoe definieer je die variabelen in je class? Als je ze gewoon zo aanmaakt als dat je nu doet, moet je ze meegeven in je function tussen ( en ) .



<?php
public function setAttribute($sCase, $sParam) {
	$this->sCase = $sCase;
	$this->sParam = $sParam;
	
	switch($this->sCase) {
		case "AddColumns":
			$this->aAddColumns = explode(",",trim($this->sParam));
			break;
		case "RemoveColumns":
			$this->aRemColumns = explode(",",trim($this->sParam));
			break;
		default:
			break;
	}
}
?>


Ze worden in een andere functie gevult, en dan wordt later (in de __destruct) weer gebruikt door de functie getColumns();. Het geheel ziet er ongeveer als volgt uit:


<?php
final class modTable {
	private $sCase;
	private $sParam;
	
	private $aAddColumns;
	private $aRemColumns;
	
	public function __contruct() {
		$dbConn = mysql_connect("127.0.0.1", "root", "", true);
		mysql_select_db("dbles", $dbConn);
	}
	
	public function __destruct() {
		print_r($this->getColumns());
	}
	
	public function setAttribute($sCase, $sParam) {
		$this->sCase = $sCase;
		$this->sParam = $sParam;
		
		switch($this->sCase) {
			case "AddColumns":
				$this->aAddColumns = explode(",",trim($this->sParam));
				break;
			case "RemoveColumns":
				$this->aRemColumns = explode(",",trim($this->sParam));
				break;
			default:
				break;
		}
	}
	
	private function getColumns() {
	    return array_diff($this->aAddColumns, $this->aRemColumns);
	}
}
?>


Ik hoop dat dit misschien meer duidelijkheid schept :).

Alvast bedankt!
Groet, Joost.

Reageren