in_array - wie zweite ebene abfragen?

Fragen zu allen Themen rund ums Programmieren außerhalb von phpBB können hier gestellt werden - auch zu anderen Programmiersprachen oder Software wie Webservern und Editoren.
Antworten
Benutzeravatar
mgutt
Mitglied
Beiträge: 2999
Registriert: 31.08.2004 16:44
Wohnort: Hennef
Kontaktdaten:

in_array - wie zweite ebene abfragen?

Beitrag von mgutt »

Ich stehe gerade auf dem Schlauch.

Wenn ich mit in_array prüfen will ob ein Wert enthalten ist und ich aber folgende Struktur habe was mache ich dann?
array([0] => array(['element'] => wert) [1] => array(['element'] => wert) .... [9] => array(['element'] => wert))
hier möchte ich feststellen, ob bei array 0-9 im ['element'] keine 0 vorkommt. (0 ist standard, wenn eine andere zahl ist, dann beginnt meine if-schleife).

gruß
meine Foren: http://www.maxrev.de/communities.htm
Ich kaufe Dein Forum! Angebote bitte an marc at gutt punkt it
Benutzeravatar
S2B
Ehemaliges Teammitglied
Beiträge: 3258
Registriert: 10.08.2004 22:48
Wohnort: Aachen
Kontaktdaten:

Beitrag von S2B »

Da wirst du um eine Schleife nicht herum kommen. Wenn du so etwas mehr als einmal brauchen solltest, würde ich es einfach in eine Funktion auslagern:

Code: Alles auswählen

function in_array2($value, $subkey, $array)
{
  foreach ($array as $subarray)
  {
    if (isset($subarray[$subkey]) && $subarray[$subkey] == $value)
    {
      return true;
    }
  }
  return false;
}
Gruß, S2B
Keinen Support per ICQ/PM!
Hier kann man meine PHP-Skripte und meine MODs für phpBB runterladen.
Benutzeravatar
mgutt
Mitglied
Beiträge: 2999
Registriert: 31.08.2004 16:44
Wohnort: Hennef
Kontaktdaten:

Beitrag von mgutt »

Und wie mache ich es ohne Funktion und lasse beim 1. erfüllen die Schleife abbrechen und einen Wert zuweisen?

Derzeit sieht es bei mir so aus:

Code: Alles auswählen

//-- mod : attachmod -----------------------------------------------------------
//-- add
if ( defined('CH_mod_attachmod') )
{
	if ( $forum_topic_data['topic_attachment'] == 1 )
	{
		$forum_topic_data['topic_attachment'] = 0;
		foreach ($postrow as $attach_array)
		{
			if ( $attach_array['post_attachment'] != 0)
			{
				$forum_topic_data['topic_attachment'] = 1;
				if ($user->data['user_id'] == 2)
				{
					echo('Attachment gefunden');
				}
			}
		}
	}
	init_display_post_attachments($forum_topic_data['topic_attachment']);
}
//-- fin mod : attachmod -------------------------------------------------------
Aber für jede Erfüllung vergibt er den Wert erneut, was für mich nicht nötig ist.
meine Foren: http://www.maxrev.de/communities.htm
Ich kaufe Dein Forum! Angebote bitte an marc at gutt punkt it
Benutzeravatar
S2B
Ehemaliges Teammitglied
Beiträge: 3258
Registriert: 10.08.2004 22:48
Wohnort: Aachen
Kontaktdaten:

Beitrag von S2B »

Normal müsste das mit einem

Code: Alles auswählen

break;
gehen, ich bin mir aber im Moment nicht zu 100% sicher...
Gruß, S2B
Keinen Support per ICQ/PM!
Hier kann man meine PHP-Skripte und meine MODs für phpBB runterladen.
Benutzeravatar
mgutt
Mitglied
Beiträge: 2999
Registriert: 31.08.2004 16:44
Wohnort: Hennef
Kontaktdaten:

Beitrag von mgutt »

jo, das wars.

Code: Alles auswählen

//-- mod : attachmod -----------------------------------------------------------
//-- add
if ( defined('CH_mod_attachmod') )
{
	if ( $forum_topic_data['topic_attachment'] == 1 )
	{
		$forum_topic_data['topic_attachment'] = 0;
		foreach ($postrow as $attach_array)
		{
			if ( $attach_array['post_attachment'] != 0)
			{
				$forum_topic_data['topic_attachment'] = 1;
				break;
			}
		}
	}
	init_display_post_attachments($forum_topic_data['topic_attachment']);
}
//-- fin mod : attachmod -------------------------------------------------------
Der Attachment Mod ist leider etwas dumm. Der fragt immer alle posting ids ab, auch wenn auf der angezeigten Seite, gar kein Dateianhang zu sehen ist.

Damit dürfte ich dem jetzt einen Riegel vorgeschoben haben.

Danke!
meine Foren: http://www.maxrev.de/communities.htm
Ich kaufe Dein Forum! Angebote bitte an marc at gutt punkt it
Antworten

Zurück zu „Coding & Technik“