我正在尝试使用json_decode
函数来获取数据。
以下是print_r
个结果:
Array
(
[ticker] => Array
(
[base] => BTC
[target] => USD
[price] => 3796.85831297
[volume] => 173261.82951203
[change] => 6.29130608
)
[timestamp] => 1545745501
[success] => 1
[error] =>
)
当我想用foreach
调用价格值时,它会显示该值,但出现此错误:
警告:字符串偏移量“价格”非法
foreach ($json as $key => $value) {
$price = $value['price'];
echo '<br>' . $price;
}
以下是var_dump
个结果:
array(4) {
["ticker"]=>
array(5) {
["base"]=>
string(3) "BTC"
["target"]=>
string(3) "USD"
["price"]=>
string(13) "3796.85831297"
["volume"]=>
string(15) "173261.82951203"
["change"]=>
string(10) "6.29130608"
}
["timestamp"]=>
int(1545745501)
["success"]=>
bool(true)
["error"]=>
string(0) ""
}
有人认为我的问题可能是this question的重复。但是echo $json['price'];
什么也没显示!
答案 0 :(得分:3)
您可以使用array_column。
$price = array_column($json, 'price');
echo $price[0];
答案 1 :(得分:3)
您的方法确定,但是您必须确保$value
是一个数组,并且包含price
键,否则您将获得
警告:字符串偏移量“价格”非法
要解决此问题,您可以在 $ value 上使用is_array()
,在 $ value ['price'] isset()和!empty()
>
foreach ($json as $key => $value) {
if(is_array($value) && isset($value['price']) && !empty($value['price'])){
$price = $value['price'];
echo '<br>' . $price;
}
}
答案 2 :(得分:2)
确保$ value是一个数组并且包含键。
foreach ($json as $key => $value) {
if(is_array($value) && isset($value['price']))
{
$price = $value['price'];
echo '<br>' . $price;
}
}
答案 3 :(得分:0)
尝试一下:
foreach ($json as $key => $value) {
$price = $value['ticker']['price'];
echo '<br>' . $price;
}
您的price
键嵌套在ticker
内一层深的位置
希望这会有所帮助。