数组中的对象,将对象传递给PHP方法
我有一个PHP应用程序,它具有构建用于期望API调用信息的函数。但是,我试图通过传递模仿API数据的信息来使用这个函数。数组中的对象,将对象传递给PHP方法
我在数组中挣扎了一番,这似乎是数组中的一个对象。
我可以访问该阵列,所述API提供的,所以当我使用下面的代码($triggers
是阵列的API调用返回):
print("<pre>".print_r($triggers,true)."</pre>");
我得到以下输出:
Array
(
[0] => stdClass Object
(
[triggerid] => 18186
[status] => 0
[value] => 0
)
这是函数的开头:
function iterate_triggers($triggers){
$trigger_id_values = array();
foreach($triggers as $trigger) {
//Necessary to show human readable status messages.
$check_status = array(0=>"Up", 1=>"Down", 2=>"Degraded", 3=>"Maintenance");
array_push ($trigger_id_values, [$trigger->triggerid, $trigger->value]);
所以如果我想通过这个函数[triggerid] => 18186
和[value] => 1
我该怎么做?
目前我想:
iterate_triggers(array(0 => array("triggerid" => 18186,"status" => 0,"value" => 1,)));
但是这给了我一个“试图获得非对象的属性”错误。请对我很好,我已经尽了我的努力去研究和自己构建这个无济于事。
最简单的方法是将assoc命令数组转换只是一个对象
在你的情况下访问,这将是
iterate_triggers(array(0 => (object)array("triggerid" => 18186,"status" => 0,"value" => 1,)));
您正在创建并传递一个包含数组的数组,而您的函数需要一个对象数组。
你应该事先创建你的对象,然后构造你的参数数组,并将它传递给你的函数。
$obj = new \stdClass();
$obj->triggerid = 18186;
$obj->status = 0;
$obj->value = 1;
$arr = array($obj);
iterate_triggers($arr);
这个comment on php.net以及该对象文档的其余部分可能对您有用。
到目前为止实例化一个空的通用PHP对象,然后可以修改不管出于什么目的的最简单,最正确的方法你选择:
<?php $genericObject = new stdClass(); ?>
你与你自己的代码的错误讯息造成通过$trigger->triggerid
里面的函数,当$trigger
是一个数组而不是一个对象,因为函数期望。对象属性是使用$someObject->propertyName
符号访问,而数组元素使用$someArray['keyName']
欣赏关于此主题的所有信息。 –
不知道如果我的评论会有所帮助,但仅仅想指出这个错误的字面意思,那么当它实际上是一个数组时,你试图访问一个对象,因此,“尝试获取非对象的属性”。 – hzq
以及它是有帮助的,但那是我的问题的一部分。我不知道如何将它作为一个对象传递给函数。 –