我有一个多维数组,其中一些元素是对象。我想最终得到 2 个数组,一个具有通过我的 esc() 函数传递的所有字符串值和对象属性,另一个是未修改的原始数组。
给定以下代码:
$raw = $data;
echo $raw['obj']->description; // Prints '< >Test Desc'
array_walk_recursive($data, function (&$item, $key){
if(is_string($item)) {
$item = esc($item);
} elseif(is_object($item)) {
foreach ($item as $property => $value) {
if(is_string($value)) {
$item->$property = esc($value);
}
}
}
});
echo $data['obj']->description; // Prints '< >Test Desc' - Correct
echo $raw['obj']->description; // Prints '< >Test Desc' - Incorrect
我希望 $raw 完全未修改,并且 $data 已通过 esc() 处理。对象属性除外。由于某种原因,$raw 中的对象也被修改了,所以这两echo
行打印了不同的值,这是为什么呢?