Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/232.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 如何从包含对象的数组中获取对象的元素_Php_Arrays_Object_Elements - Fatal编程技术网

Php 如何从包含对象的数组中获取对象的元素

Php 如何从包含对象的数组中获取对象的元素,php,arrays,object,elements,Php,Arrays,Object,Elements,下面是一个阵列,它是来自条带支付网关的响应: $response = Array ( [deleteCardAccount] => Stripe\Card Object ( [_opts:protected] => Stripe\Util\RequestOptions Object ( [headers] => Array ( ) [apiKey] => sk_test_erwppHN9ibdfgdfg0CesaOwnDy ) [_values:protected] =&

下面是一个阵列,它是来自条带支付网关的响应:

$response = Array ( [deleteCardAccount] => Stripe\Card Object ( [_opts:protected] => Stripe\Util\RequestOptions Object ( [headers] => Array ( ) [apiKey] => sk_test_erwppHN9ibdfgdfg0CesaOwnDy ) [_values:protected] => Array ( [id] => card_18SwerIsEZ1YjoOMVAFRLA [currency] => usd [deleted] => 1 ) [_unsavedValues:protected] => Stripe\Util\Set Object ( [_elts:Stripe\Util\Set:private] => Array ( ) ) ...
上面的数组包含对象“Stripe\Card object”,我想获取元素[\u values:protected]的值,它是一个数组

当我将对象投射到数组时

$nasty_array = (array)$response['deleteCardAccount'];
print_r($nasty_array); 
我得到这个数组,它的键以星号开头:

Array ( [*_opts] => Stripe\Util\RequestOptions Object ( [headers] => Array ( ) [apiKey] => sk_test_wejYbwerCerwesaOefg ) [*_values] => Array ( [id] => card_18SwerIsEZ1YjoOMVAFRLA [currency] => usd [deleted] => 1 ) [*_unsavedValues] => Stripe\Util\Set Object ( [_elts:Stripe\Util\Set:private] => Array ( ) ) ...
然而当我尝试

print_r($nasty_array[*_opts]);
print_r($nasty_array[*_values]);
我明白了

error: Undefined index *_values 
error: Undefined index *_opts  
问题:

  • 为什么此数组中的键以星号开头
  • 如何在不进行解析的情况下访问这些密钥
  • 是否有其他方法可以获取关联数组中对象的元素
    注意:当我手动创建一个包含以星号开头的键的数组时,我可以毫无问题地访问这些键,但由于某些原因,在将opject强制转换到数组时,我无法访问类似的键

    数组中的对象无需强制转换即可捕获到变量中

    $captured_object = $response['deleteCardAccount'];
    
    然后,可以使用“箭头”符号简单地引用捕获对象的元素:

    print_r($captured_object->id);    
    print_r($captured_object->currency);
    print_r($captured_object->deleted);
    
    甚至更简单的是,通过混合使用数组表示法和箭头表示法,可以直接引用对象:

    print $response['deleteCardAccount']->id;
    print $response['deleteCardAccount']->currency
    print $response['deleteCardAccount']->deleted;
    

    此方法适用于条带响应对象,但尚未使用具有受保护属性的其他对象进行测试。

    可以将数组中的对象捕获到变量中,而无需强制转换

    $captured_object = $response['deleteCardAccount'];
    
    然后,可以使用“箭头”符号简单地引用捕获对象的元素:

    print_r($captured_object->id);    
    print_r($captured_object->currency);
    print_r($captured_object->deleted);
    
    甚至更简单的是,通过混合使用数组表示法和箭头表示法,可以直接引用对象:

    print $response['deleteCardAccount']->id;
    print $response['deleteCardAccount']->currency
    print $response['deleteCardAccount']->deleted;
    

    这种方法适用于条带响应对象,但尚未使用其他具有受保护属性的对象进行测试。

    访问数组时,是否应该在数组的键周围加引号<代码>打印($nasty_数组['*_opts'])如果没有引号,脚本将无法工作并生成空白页。无法访问这些属性的原因不是因为对象位于数组中。无法访问它们的原因是它们是,这也是将对象强制转换为数组时它们被星号标记/不可用的原因。这是JSON吗?如果是这样的话,那么解码到一个数组中……您需要从_值中获得什么特定数据?Stripe API是否没有获取所需数据元素的方法?在访问数组时,是否应该在数组的键周围加引号<代码>打印($nasty_数组['*_opts'])如果没有引号,脚本将无法工作并生成空白页。无法访问这些属性的原因不是因为对象位于数组中。无法访问它们的原因是它们是,这也是将对象强制转换为数组时它们被星号标记/不可用的原因。这是JSON吗?如果是这样的话,那么解码到一个数组中……您需要从_值中获得什么特定数据?条带API是否没有获取所需数据元素的方法?