PHP 将来自 file_get_contents() 的数组识别为字符串,尽管它的格式正确
PHP recognizes array, that comes from file_get_contents() as string, though it is in right format
我通过 file_get_contents() 接收信息并将其分配给 var,如下所示:
$values = array();
$values = trim(file_get_contents($newurl));
echo gettype($values); // will show "string"
当我回显 $values 时,我看到它是一个像这样的字符串:
[["EUR", "80"],["TRY", "50"],["USD", "40"],["GBP", "60"]];
并且 gettype($values) 也显示“字符串”而不是数组。但如果我这样做
$values = [["EUR", "80"],["TRY", "50"],["USD", "40"],["GBP", "60"]];
echo gettype($values); // will show "array"
它会告诉我 $values 是一个数组。
如何告诉 php trim(file_get_contents($newurl)) 是数组,而不是字符串?
1 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
$string = 'Hello World';
$arr = str_split($string, 3);
print_r($arr);
//Array ( [0] => Hel [1] => lo [2] => Wor [3] => ld )
3 use json(受到青睐,因为您可以从那里解析关联 arrays/objects
$json = '{"a":1,"b":2,"c":3,"d":4,"e":5}';
var_dump(json_decode($json));
对于 1 和 2,您将不得不应用其他技巧,因为这不容易递归工作
试试这个:
$values = json_decode(trim(file_get_contents($newurl)), 1);
echo gettype($values); // Array
您可以添加一个函数来测试它是否是 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
我通过 file_get_contents() 接收信息并将其分配给 var,如下所示:
$values = array();
$values = trim(file_get_contents($newurl));
echo gettype($values); // will show "string"
当我回显 $values 时,我看到它是一个像这样的字符串:
[["EUR", "80"],["TRY", "50"],["USD", "40"],["GBP", "60"]];
并且 gettype($values) 也显示“字符串”而不是数组。但如果我这样做
$values = [["EUR", "80"],["TRY", "50"],["USD", "40"],["GBP", "60"]];
echo gettype($values); // will show "array"
它会告诉我 $values 是一个数组。
如何告诉 php trim(file_get_contents($newurl)) 是数组,而不是字符串?
1 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
$string = 'Hello World';
$arr = str_split($string, 3);
print_r($arr);
//Array ( [0] => Hel [1] => lo [2] => Wor [3] => ld )
3 use json(受到青睐,因为您可以从那里解析关联 arrays/objects
$json = '{"a":1,"b":2,"c":3,"d":4,"e":5}';
var_dump(json_decode($json));
对于 1 和 2,您将不得不应用其他技巧,因为这不容易递归工作
试试这个:
$values = json_decode(trim(file_get_contents($newurl)), 1);
echo gettype($values); // Array
您可以添加一个函数来测试它是否是 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