Array nach vorhandenen Werten durchsuchen

Cryy

Grünschnabel
Nabend,
ich bin leider noch ein PHP-Anfänger, sodass ich mal eure Hilfe benötige:

Zu Beginn erstmal den bisherigen Code:

PHP:
function multidimensional_search($daten, $searched)
{
	if (empty($searched) || empty($daten))
	{
		return false;
	}

	foreach ($daten as $key => $value)
	{
		$exists = true;
		foreach ($searched as $skey => $svalue)
		{
			$exists = ($exists && IsSet($daten[$key][$skey]) && $daten[$key][$skey] == $svalue);
		}
		if ($exists)
		{
			return $key;
		}
	}

	return false;
}

$daten = array();
$daten[] = array('nr' => 1, 'email' => 'mail@mail.com');
$daten[] = array('nr' => 2, 'email' => 'mail@mail.com');
$daten[] = array('nr' => 2, 'email' => '55d3ed34dc6c35338e0a937ea7576270'); // 55d3ed34dc6c35338e0a937ea7576270 = MD5('mail@mail.com')
$daten[] = array('nr' => 1, 'email' => '55d3ed34dc6c35338e0a937ea7576270');

$array_emails = array();
foreach ($daten as $zeile)
{
	$array_emails[] = $zeile['email'];
}


foreach ($daten as $zeile)
{
	if (multidimensional_search($daten, array('nr' => $zeile['nr'], 'email' => md5($zeile['email']))) != 0)
	{

		echo $zeile['nr'] . ' ' . $zeile['email'] . 'ist als md5 vorhanden<br />';
		//da datensatz 3 jedoch auch die email als hash beinhaltet, jedoch dort die nr. unterschiedlich ist, soll mail@mail.com' trotzdem erneut in das array $array_emails
	}
}

Wenn eine email als MD5 vorkommt, jedoch die nr unterschiedlich ist, dann füge die email erneut in $array_emails

Sprich: man überprüft, ob 'mail@mail.com' als MD5 vorhanden ist und die nr (vom Datensatz mit dem MD5-Hash als email) nicht dieselbe ist (wie die des Datensatzes mit der email im Klartext), dann soll die email erneut in $array_emails.

Demnäch wäre nun mail@mail.com 2x im array vorhanden. Der MD5-Hash darf dabei ruhig in $array_emails erhalten bleiben.

Problem: Wenn die Nummer dieselbe ist (wie es bei Datensatz 4 der Fall ist), dann soll die email nicht erneut in das array $array_emails

Ich bin für jede Hilfe dankbar... Mit dem Problem kämpfe ich seit 2 Tagen :D

Liebe Grüße, Cryy
 
Zuletzt bearbeitet von einem Moderator:
Warum um alles in der Welt, werden die Mailadressen gehasht?

Wie dem auch sei, ich würde folgendermaßen vorgehen:
1.) Alle Hashes in deren Normalwert verwandeln, ergo aus "55d3ed34dc6c35338e0a937ea7576abc" wieder "mail@mail.com" machen.
2.) Das Array umsotieren, und zwar gruppiert nach email-Adressen
3.) In den dann entstandenen Unterarrays alles doppelten Nummern entfernen.
 
Nur mal so für die Zukunft... bitte nicht den Eingangspost komplett löschen. Jetzt bringt dieser Thread keinem mehr was.
 
(und weil ich das genau so sehe...
@Cryy: Wenn etwas erledigt ist reicht ein Klick auf den Erledigt-Button, ohne alles zu löschen).
 
Zurück