Php 有没有办法比较两个数组';s键,如果这些键相等,则将第一个数组的值分配给类对象?
我有两个数组。第一个包含来自数据库的id、用户名和密码,如下所示:Php 有没有办法比较两个数组';s键,如果这些键相等,则将第一个数组的值分配给类对象?,php,arrays,Php,Arrays,我有两个数组。第一个包含来自数据库的id、用户名和密码,如下所示: Array ( [id] => 3 [username] => Scott [password] => new ) 第二个数组是 get_class_vars(); 显然,它包含了所有的类变量,如id、username等 如何比较两个数组中的键,如果键相同,例如username=username,如何将username的值分配给类属性username?值得注意的是,我已经实例化了该类,并且正在从test.p
Array ( [id] => 3 [username] => Scott [password] => new )
第二个数组是
get_class_vars();
显然,它包含了所有的类变量,如id、username等
如何比较两个数组中的键,如果键相同,例如username=username,如何将username的值分配给类属性username?值得注意的是,我已经实例化了该类,并且正在从test.php调用这些方法:
// authenticate returns user info from the db
$user = new User();
$find = $user->authenticate($username, $password);
$user->instantiate($find) // this is the method that I need to create
// in user.php to assign the user properties
希望这是有道理的。几个小时来我一直在想办法。如果您需要任何澄清,请让我知道 试试这个:
foreach(get_class_vars() as $key->$value)
$array[$key] = $value;
这将从get\u class\u vars()
获取密钥,并将$array
(您的另一个数组)中的值设置为$value尝试以下操作:
foreach(get_class_vars() as $key->$value)
$array[$key] = $value;
$common_keys = array_intersect(array_keys($array), array_keys(get_class_vars($object));
foreach($common_keys as $key) $object->$key = $array[$key];
这将从get_class_vars()
获取密钥,并将$array
(您的其他数组)中的值设置为$value
PHP支持在其他变量中存储变量和函数名。使用该方法,您可以迭代数组中的所有键,检查键是否作为User
对象的属性存在,如果存在,则用数组中的值替换对象中的值:
$common_keys = array_intersect(array_keys($array), array_keys(get_class_vars($object));
foreach($common_keys as $key) $object->$key = $array[$key];
foreach ($array as $key => $value) {
if (isset($user->$key)) {
$user->$key = $value;
}
}
因此,对于数组([username]=>JohnSmith)
它将检查isset($user->username)
,然后分配$user->username='JohnSmith'
PHP支持在其他变量中存储变量和函数名。使用该方法,您可以迭代数组中的所有键,检查键是否作为User
对象的属性存在,如果存在,则用数组中的值替换对象中的值:
foreach ($array as $key => $value) {
if (isset($user->$key)) {
$user->$key = $value;
}
}
因此,对于数组([username]=>JohnSmith)
它将检查isset($user->username)
,然后分配$user->username='JohnSmith'
,这看起来像是一个赢家。如果这个方法在类中,对于get class vars参数,我会用$this替换$object吗?不太可能get\u object\u vars($this)
也允许访问受保护和私有变量(由于使用$this的范围)。我建议保留一个数据数组并改用getter/setter。有关更多信息,请参阅PHP的magic method文档。这看起来是个赢家。如果这个方法在类中,对于get class vars参数,我会用$this替换$object吗?不太可能get\u object\u vars($this)
也允许访问受保护和私有变量(由于使用$this的范围)。我建议保留一个数据数组并改用getter/setter。有关更多信息,请参阅PHP的magic method文档。