PHP将来自file_get_contents()的数组识别为字符串,尽管它的格式正确

eanckbw9  于 2023-03-07  发布在  PHP
关注(0)|答案(3)|浏览(101)

我用file_get_contents()接收信息并将其赋值给var,如下所示:

$values = array();
$values = trim(file_get_contents($newurl));
echo gettype($values); // will show "string"

当我回显$values时,我看到它是一个字符串,如下所示:
[[“欧元”、“80”]、[“土耳其里拉”、“50”]、[“美元”、“40”]、[“英镑”、“60”]];
而且gettype($values)也显示了“string”而不是数组。

$values = [["EUR", "80"],["TRY", "50"],["USD", "40"],["GBP", "60"]];
echo gettype($values); // will show "array"

它会告诉我$values是一个数组。
我怎样才能告诉php trim(file_get_contents($newurl))是一个数组而不是字符串?

axzmvihb

axzmvihb1#

1 use json(由于您可以从那里解析辅助数组/对象,因此最受欢迎

$json = '{"a":1,"b":2,"c":3,"d":4,"e":5}';
var_dump(json_decode($json));

2个use the web-style parameter encoding

$str = "first=value&arr[]=foo+bar&arr[]=baz";
parse_str($str, $output);
echo $output['first'];  // value
echo $output['arr'][0]; // foo bar
echo $output['arr'][1]; // baz

3(危险,可能失效)use the explode functions

$string = 'Hello World';
$arr = str_split($string, 3);
print_r($arr);
//Array ( [0] => Hel [1] => lo [2] => Wor [3] => ld )

对于2和3,您必须应用其他技巧,因为这不容易递归工作

mdfafbf1

mdfafbf12#

试试这个:

$values = json_decode(trim(file_get_contents($newurl)), 1);
echo gettype($values); // Array
5t7ly7z5

5t7ly7z53#

你可以添加一个函数来测试它是否是一个json字符串:

function isJsonString($ent){
if(!is_string($ent))
return false;
json_decode($ent);
return json_last_error() === JSON_ERROR_NONE;
}

然后,测试:

if(isJsonString($values))
$values = json_decode($values); // --> stdObject

相关问题