Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/246.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2008/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 数组到对象抛出未捕获错误:调用未定义的方法stdClass_Php_Arrays_Object - Fatal编程技术网

Php 数组到对象抛出未捕获错误:调用未定义的方法stdClass

Php 数组到对象抛出未捕获错误:调用未定义的方法stdClass,php,arrays,object,Php,Arrays,Object,我试图从代码中重建一个对象。首先,我将对对象的调用分解为数组,然后将数组转换为对象,然后测试调用是否有效 创建的对象看起来很好,但测试调用失败 $claim = new_client(); print_r($claim); $pat = $claim->patientFirstName(); echo $pat; function new_client() { $text = ' $claim->patientFirstName() UNWANTED STUFF. $claim

我试图从代码中重建一个对象。首先,我将对对象的调用分解为数组,然后将数组转换为对象,然后测试调用是否有效

创建的对象看起来很好,但测试调用失败

$claim = new_client();
print_r($claim);
$pat = $claim->patientFirstName();
echo $pat;

function new_client()
{
$text = '
$claim->patientFirstName() 
UNWANTED STUFF. 
$claim->patientMiddleName()
UNWANTED STUFF.....
$claim->patientLastName() ';


$client = array();
$i = 1 ;
$array =  (explode("claim->",$text));

foreach ($array as &$variable) {
$variable = substr($variable, 0, strpos($variable, "()"));

$client[$variable] = $i;
$i++;
}
unset ($variable);
$object = new stdClass();
foreach ($client as $key => $value)
{
$object->$key = $value;
}
return $object;
}
结果如下

stdClass Object ( [] => 1 [patientFirstName] => 2 [patientMiddleName] => 3 
[patientLastName] => 4 ) 
Fatal error: Uncaught Error: Call to undefined method 
stdClass::patientFirstName()...
那么,你有什么想法来解释原因吗 $pat=$claim->patientFirstName();
失败了吗

您访问元素的方式是错误的

$claim->patientFirstName
$claim->patientMiddleName

似乎存在报价和期间不匹配。单引号内的PHP代码将不会被计算您正在为$claim变量分配一个函数,并尝试使用该变量调用其他函数(将其视为类对象)。new_client()是一个函数或类对象?结果似乎是一个格式良好的stdClass对象,这在运行代码时可以在打印中看到,因此,虽然这可能是真的,但这是答案吗?new_client()是一个返回类对象的函数,或者看起来是这样。它是属性,而不是方法<代码>$pat=$claim->patientFirstName会有用的,谢谢。就工作而言,你是对的。为了能够以同样的方式访问它,我需要更改什么?目标是重建原始对象,而不是更改代码以访问其他对象。换句话说,为什么我不能访问使用$claim->patientFirstName()创建的对象?以这种方式访问的对象在print\r($object)中看起来会是什么样子,或者它们看起来会是一样的?您正在访问它,因为partientFirstName是一个函数抱歉,速度太慢了,这不是我所做的吗?除了key_name是一个变量,因为它是通过其值循环的$对象->$key=$value;您正在错误地访问它们。请检查您是否在键后放置了()