/ / Wie kann geprüft werden, ob das mehrdimensionale Array denselben Wert enthält? - PHP, Arrays, mehrdimensionales Array

Wie kann man überprüfen, ob das mehrdimensionale Array denselben Wert enthält? - PHP, Arrays, mehrdimensionales Array

Ich habe ein mehrdimensionales Array. Ich muss überprüfen, ob ein Wert in diesem Array denselben Wert enthält. Wenn ja, dann ausführen. Was ist der bessere Weg, dies zu überprüfen, oder der einfachste Weg, TIA

$array[] = array(5, 10, 15, 20, 25, 30);
$array[] = array(1, 2, 3, 4, 5, 6);
$array[] = array(2, 6, 8, 10, 12, 14);

Array
(
[0] => Array
(
[0] => 5
[1] => 10
[2] => 15
[3] => 20
[4] => 25
[5] => 30
)

[1] => Array
(
[0] => 1
[1] => 2
[2] => 3
[3] => 4
[4] => 5
[5] => 6
)

[2] => Array
(
[0] => 2
[1] => 6
[2] => 8
[3] => 10
[4] => 12
[5] => 14
)
)

Antworten:

1 für die Antwort № 1

Wenn ich deine Frage richtig verstanden habe, bist du esSuche nach einem Weg, um Werte zu finden, die in mehr als einem der inneren Arrays vorkommen.? Hier sind zwei Lösungen, die einige integrierte PHP-Array-Methoden verwenden.

Konfiguration

  • Ebnen $array (erster Schritt für beide Methoden) using array_merge auf sich selbst

Code:

$array[] = array(5, 10, 15, 20, 25, 30);
$array[] = array(1, 2, 3, 4, 5, 6);
$array[] = array(2, 6, 8, 10, 12, 14, 5);

// 5, 10, 15, 20, 25, 30, 1, 2, 3, 4, 5, 6, 2, 6, 8, 10, 12, 14, 5
$array = call_user_func_array("array_merge", $array);

Methode A

  1. Holen Sie sich ein Array von einzigartige Werte im $array (Duplikate entfernt)
  2. Holen Sie sich was entfernt wurde (= die Duplikate) von Vergleich dieses Arrays mit dem Original $array
  3. Stellen Sie sicher, Werte nur einmal erscheinen im letzten Array

Code:

$duplicates =
array_unique(
array_diff_key(
$array,
array_unique($array)
)
);

// $duplicates = 5, 2, 6, 10

Methode B

  1. Holen Sie sich eine Liste von wie oft jeder Wert erscheint im $array
  2. Filter diese Liste enthält nur Werte, die mehrmals erscheinen (= Duplikate)
  3. Holen Sie sich die Schlüssel dieser Liste (der tatsächliche $array Werte)

Code:

$duplicates =
array_keys(
array_filter(
array_count_values($array),
function ($count) {
return $count > 1;
}
)
);

// $duplicates = 5, 10, 2, 6

1 für die Antwort № 2

Schleifen Sie einfach durch das Array und das Subarray und füllen Sie $ isRepeated mit Werten und Auftrittshäufigkeiten. Wenn $ isRepeated [bestimmter_Wert] vorhanden ist, wurde dieser Wert zuvor gefunden:

$array[] = array(5, 10, 15, 20, 25, 30);
$array[] = array(1, 2, 3, 4, 5, 6);
$array[] = array(2, 6, 8, 10, 12, 14);

$isRepeated = array();
foreach($array as $subArray) {
foreach($subArray as $item) {
if (!isset($isRepeated[$item])) {
$isRepeated[$item] = 0;
} else {
$isRepeated[$item]++;
echo "n<br>Item $item is repeated";
}
}
}

http://ideone.com/9yObII

Ausgabe:

Item 5 is repeated
Item 2 is repeated
Item 6 is repeated
Item 10 is repeated