如何小写所有的对象属性(字段名),并保持为对象,而不是数组


how to lowercase all the object properties(fieldnames) and remain as object and not array

是的,我有这个对象,属性代表db表列作为属性,但它们都是大写的…如何将对象的所有属性更改为小写,而不将对象转换为数组后将属性从大写转换为小写?我想我可以用array_change_key_case但这个在我需要对象时返回array,而不是array也一样get_class_varsget_object_vars

如何?

你最好的选择(也是第一选择)应该是拦截对象的创建,并使属性以小写开始;这将是最干净和最高效的。

如果这是不可能的任何原因,我们正在谈论一个哑对象(stdClass类型),那么最简单的是通过一个中间数组,然后进入一个新的对象:

$temp = (array)$old;
$new = (object)array_combine(array_map('strtolower', array_keys($temp)), $temp);
如果对象是另一种类型,那么真的没有办法做你建议的,你应该退后一步,从早期阶段重新考虑应用程序