我想用php在变量中存储数组

5vf7fwbs  于 2022-12-21  发布在  PHP
关注(0)|答案(1)|浏览(99)
$curl_response = '[OPT: value]';
  $obj = json_decode($curl_response);
  print_r( $obj->OPT); `

这是我正在尝试做的,但我在尝试保存OPT值时出错

stdClass Object ( [MSISDN] => 03142985338 [OPT] => 161 [ResponceCode] => 0020 [ResponceMessage] => Success )
Notice: Trying to get property 'OPT' of non-object
k7fdbhmy

k7fdbhmy1#

您可以将$curl_response定义为“[OPT:value]“,它不是有效的JSON。其内容的正确JSON对象文本应为

$curl_response = '{"OPT": "value"}';

我认为在您的代码中,json_decode($curl_response)会导致$obj == null,因为它不包含OPT属性。
要获得实际包含'value'的$obj-〉OPT,您可以这样做:

$curl_response = '[OPT: value]';

// some string manipulation
$curl_response_elements = explode(': ', trim($curl_response, '[]'); // split string to array at ': '
$object_key = trim($curl_response_elements[0]);                     // remove spaces
$object_value = trim($curl_response_elements[1]); 

$obj = new stdClass();
$obj->$object_key = $object_value;

print_r($obj->OPT);

阅读一遍你的问题,你想把数组存储在一个变量中,而不是对象中,你的print_r提示你正在寻找一个对象,要把你的数据放入一个数组中,把它定义为array而不是stdClass:

$obj = array();
$obj[$object_key] = $object_value;

或者简称:

$obj = [$object_key => $object_value];

请记住,如果使用数组而不是对象,则需要修改print_r:

print_r($obj['OPT']); // returns 'value' from array

相关问题