我制作了這個函式,并觀察到它在執行程序中出現了問題。我無法獲得$names_from_source子函式內部的結果。沒有錯誤,它檢測到變數,但它的值始終為 NULL。
/*
source: array of MyObject
copy: array of MyObject
return: return duplicated objects based on name
*/
function get_all_duplicated($source, $copy) {
$names_from_source = array_map(fn($obj): string => $obj->name, $source);
var_dump($names_from_source); // return list of names
return array_filter($copy, function($obj) {
global $names_from_source;
var_dump($names_from_source); // return NULL
return in_array($obj->name, $names_from_source);
});
}
為什么?謝謝
uj5u.com熱心網友回復:
global 無法使用,因為$names_from_source它不是全域變數。它是來自父函式的區域變數。
要在子函式中呼叫它,我必須使用術語use
/*
source: array of MyObject
copy: array of MyObject
return: return duplicated objects based on name
*/
function get_all_duplicated($source, $copy) {
$names_from_source = array_map(fn($obj): string => $obj->name, $source);
var_dump($names_from_source); // return list of names
return array_filter($copy, function($obj) use($names_from_source) {
return in_array($obj->name, $names_from_source);
});
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/512640.html
標籤:php功能
