Java имеет пул строк, в котором Java управляет распределением памяти для объектов String. См. String Pools в Java
Когда вы проверяете (сравниваете) два объекта с помощью оператора ==
, он сравнивает равенство адресов в пуле строк. Если два объекта String имеют одинаковые адреса, то он возвращает true
, в противном случае false
. Но если вы хотите сравнить содержимое двух объектов String, вы должны переопределить метод equals
.
equals
- фактически метод класса Object, но он переопределяется в класс String и дается новое определение, которое сравнивает содержимое объекта.
Example:
stringObjectOne.equals(stringObjectTwo);
Но помните, что это относится к случаю String. Если вы хотите сравнить регистр без учета регистра, вы должны пойти для метода equalsIgnoreCase класса String.
Давайте посмотрим:
String one = "HELLO";
String two = "HELLO";
String three = new String("HELLO");
String four = "hello";
one == two; // TRUE
one == three; // FALSE
one == four; // FALSE
one.equals(two); // TRUE
one.equals(three); // TRUE
one.equals(four); // FALSE
one.equalsIgnoreCase(four); // TRUE
Вы можете создать замыкание на PHP ≥5.3.
array_filter($files, function($array) use ($key) {
return is_inarr_key($array, $key);
} );
Если вы застряли на PHP <5.3,…
Вы можете сделать $ key
глобальной переменной.
function is_inarr_with_global_key($array) {
global $key;
....
}
Вы можете создать класс
class KeyFilter {
function KeyFilter($key) { $this->key = $key; }
function is_inarr_key($array) { ... }
}
...
array_filter($files, array(new KeyFilter('name'), 'is_inarr_key'));
Вы можете создать 3 разные функции
array_filter($files, 'is_inarr_name');
array_filter($files, 'is_inarr_path');
array_filter($files, 'is_inarr_number');
Вы можете написать свой собственный array_filter
function my_array_filter($files, $key) {
...
}
Я не знаю, можете ли вы предоставить функцию обратного вызова с параметрами, но в качестве предложения вы можете определить функцию обратного вызова для array_filter
array_filter($files, "is_inarr_key");
И чтобы получить имя
массива, просто переберите $ file []
и получите имя .
Затем, имея имя
, вы можете продолжить свою логику.
HTH.
Вы можете использовать функцию array_walk
как:
$arr = array(
array("name" => "Jack", "id" => 1),
array("name" => "Rose", "id" => 2),
);
$result = array(); // initialize result array.
array_walk($arr, "filter"); // iterate over the array calling filter fun for each value.
// $result will now have elements "Jack" and "Rose"
function filter($a) {
global $result; // to access the global result array.
$result[] = $a['name']; // for each array passed, save the value for the key 'name' in the result array.
}