walk - php traverse multidimensional array
Passare userdata a array_walk e fare riferimento a self (1)
Devi usare la parola chiave use
.
array_walk($lists, function (&$value, $index) use ($search) {
PHP non è come JavaScript, quindi la funzione anonima è ancora in un ambito diverso, ma è a questo che use
. Vorrei collegare alla documentazione use
, ma non sembra esserci alcun.
Devo filtrare array multidimensionale per parola chiave ricercata.
Sto usando array_walk
ma non array_walk
inviare la parola chiave ricercata all'interno di array_walk
in class
array multidimensionale
Array
(
[0] => SimpleXMLElement Object
(
[plugin_name] => Custom Extension
)
[1] => SimpleXMLElement Object
(
[plugin_name] => Hello World
)
[2] => SimpleXMLElement Object
(
[plugin_name] => Test Plugin
)
)
Ho provato a seguire le seguenti funzioni:
Il primo
array_walk($lists, function(&$value, $index){
if (stripos($value->plugin_name, $this->search) === false)
unset($lists[$index]);
});
Questo mi dà Fatal error: Using $this when not in object context in
Il secondo
$search = $this->search;
array_walk($lists, function(&$value, $index){
if (stripos($value->plugin_name, $search) === false)
unset($lists[$index]);
});
Non sono riuscito a ottenere $search
var dalla array_walk function
Il terzo
$search = $this->search;
array_walk($lists, function (&$value, $index) use ($search) {
if (stripos($value->plugin_name, $search) !== false)
return $value;
});
$search
passata con successo con la parola chiave use
ma $lists
array non ha cambiato quindi non referenziato. Perché?
Cosa dovrei fare o usare un'altra funzione invece di array_walk
?
Soluzione
$params = array('search' => $this->search, 'data' => $lists);
array_walk($lists, function (&$value, $index) use (&$params) {
if (stripos($value->plugin_name, $params['search']) === false)
unset($params['data'][$index]);
});
$lists = $params['data'];
Ho inviato parametri con la parola chiave use
come array e il riferimento a self.