$return
curl_exec按预期从myurl获取xml数据,但只是在输出缓冲区中回显它。 ob_start
的值是一个简单的布尔值。相反,我希望它将获得的xml数据作为数组或任何其他我可以处理的php对象返回(无需进行任何繁琐的val list = List((1,2,3),(2,3,4),(1,2,3))
list: List[(Int, Int, Int)] = List((1, 2, 3), (2, 3, 4), (1, 2, 3))
val sum = list.groupBy(_._1).map { case (k, v) => (k -> v.flatMap(_.productIterator.toList.drop(1).map(_.asInstanceOf[Int])).sum) }
sum: Map[Int, Int] = Map(2 -> 7, 1 -> 10)
输出缓冲)。这是可能的还是有任何解决方法?
答案 0 :(得分:1)
您需要设置curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
来自http://php.net/manual/en/function.curl-setopt.php:
CURLOPT_RETURNTRANSFER TRUE将传输作为curl_exec()返回值的字符串返回,而不是直接输出。
答案 1 :(得分:1)
您需要使用CURLOPT_RETURNTRANSFER
选项返回您的回复,而不是echoing
。
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
之后,您可能需要使用SimpleXMLElement
将xml解析为数组:
$result = curl_exec($ch);
$resultArray = new SimpleXMLElement($result);
SimpleXMLElement 将返回SimpleXMLElement对象的实例。
将xml解析为数组的另一种选择$result = curl_exec($ch);
$parser = xml_parser_create();
xml_parse_into_struct($parse, $result, $values, $indexes);
xml_parser_free($parser);
// then you can access your array values using $values,$indexes variables
print_r($values);