Folge dem Video um zu sehen, wie unsere Website als Web-App auf dem Startbildschirm installiert werden kann.
Anmerkung: Diese Funktion ist in einigen Browsern möglicherweise nicht verfügbar.
function tmp_func1 (array $item)
{
global $unique_values;
if (in_array($item[1], $unique_values))
{
return false;
}
else
{
array_push($unique_values, $item[1]);
return true;
}
}
$unique_values = array();
$result = array_filter($myfields, 'tmp_func1');
Was heißt du kommst nicht ran?
Gibt var_dump($fields[1]) denn das erwartete Ergebnis?
$myfields[] = rtrim($fields[0]);
$myfields[] = rtrim($fields[1]);
$myfields[] = rtrim($fields[2]);
/**
* array_unique über ein Element eines Array
* @param Array<Key => Array<Node>> Ein mehrstufiger Array
* @param String
* @param Integer
* @return Array<Key => Array<Node>>
*/
function array_unique_by_subitem($array, $key, $sort_flags = SORT_STRING){
$items = array();
// Die Subeitems auslesen
foreach($array as $index => $item) $items[$index] = $item[$key];
//Die Subitems mit array_unique beabreiben
$uniqueItems = array_unique($items, $sort_flags);
//Der eigentliche Array über den Key mit den selektierten Subitems abgleichen
return array_intersect_key($array, $uniqueItems);
}
1 abc 2
2 def 3
3 abc 12
4 ghi 0
//den tabulator als Trennzeiche definieren
define('C_DELIM', "\t");
//Zeilen einlesen
$lines = file('data.txt');
//Leere Zeilen ausfiltern. lineFilter: siehe Funktion am Schluss vom Code
$lines = array_filter($lines, 'lineFilter');
$rows=array();
foreach($lines as $line){
//Die Zeile in die Felder aufteilen und jedes Feld noch mit trim() auf die wirkliche Grösse kürzen
$rows[] = array_map('trim', explode(C_DELIM, $line));
}
//Unique nach Feld 2 (Feld-Index=1)
$rows = array_unique_by_subitem($rows, 1);
var_dump($rows);
//=== Verwendete Funktionen ===
/**
* array_unique über ein Element eines Array
* @param Array<Key => Array<Node>> Ein mehrstufiger Array
* @param String
* @param Integer
* @return Array<Key => Array<Node>>
*/
function array_unique_by_subitem($array, $key, $sort_flags = SORT_STRING){
$items = array();
// Die Subeitems auslesen
foreach($array as $index => $item) $items[$index] = $item[$key];
//Die Subitems mit array_unique beabreiben
$uniqueItems = array_unique($items, $sort_flags);
//Der eigentliche Array über den Key mit den selektierten Subitems abgleichen
return array_intersect_key($array, $uniqueItems);
}
/**
* Zeilenfilter. Wenn die getrimmte Zeile keine Länge mehr hat - ignorieren
* @param String Zeile
* @return Boolean Flag ob die Zeile gültig ist oder nicht
*/
function lineFilter($line){
return (strlen(trim($line)) > 1);
}
Array
(
[0] => Array
(
[0] => 1
[1] => abc
[2] => 2
)
[1] => Array
(
[0] => 2
[1] => def
[2] => 3
)
[3] => Array
(
[0] => 4
[1] => ghi
[2] => 0
)
)