【问题标题】:php switch not processing variablephp开关不处理变量
【发布时间】:2014-01-22 15:59:07
【问题描述】:

我遇到了一个 7 小时都无法解决的问题。

这是我在 openfire 服务器上创建用户的 php 脚本:

$f = fopen("LINK","r");
$odpoved = fread($f, 1024);

在手册http://www.igniterealtime.org/projects/openfire/plugins/userservice/readme.html 中写道,我的变量应包含“OK”或“UserAlreadyExistsException”。当我尝试打印 $odpoved 时,它显示良好,当我查看该页面的源代码时,它包含手动编写的标签。我的问题是,看在上帝的份上,我无法找到在 switch 中使用此变量的方法。这是现在的样子:

switch($odpoved){
    case 'OK':
        print("something");
        break;
    case 'UserAlreadyExistsException':
        print("something2");
        break;
    default:
        print("X");
}
fclose($f);

无论我做什么,它总是打印默认值。我不明白它有什么问题。我已经尝试将它与带有标签的选项进行比较,但它没有帮助并且它总是以默认值结束。 请你帮帮我好吗?感谢您的帮助,如果需要,我会提供更多详细信息。

【问题讨论】:

  • 打印$odpoved的结果是什么?
  • 正如你所说,当你查看源代码时,它会打印输出以及标签,所以它当然不会在 switch case 中输出“OK”或“UserAlreadyExistsException”。
  • 在切换之前执行 echo intval($odproved) 。 “相对” 。 intval("UserAlreadyExistsException") 。 “相对” 。间隔(“确定”);要查看它们是否是相同的字符,可能有空格或其他东西。

标签: php switch-statement openfire


【解决方案1】:

服务器将使用 XML 结果页面回复所有用户服务请求。如果请求被成功处理,返回将是一个带有“OK”文本正文的“result”元素。如果请求不成功,则返回一个“错误”元素,其文本正文为以下错误字符串之一。

输出是一个 XML 文件,因此您正在查看的是使用 XML 解析器来获取结果元素。 simplexml 会将它加载到一个数组中(因为这个 xml 页面很小,你不必担心性能,所以更复杂的 xml 解析器不值得麻烦)

$output = simplexml_load_string($odpoved) 
switch($output->result) //check $odpoved to make sure the XML structure matches

或者,您也可以使用 simplexml_load_file 传递 url 输出将是相同的。

更多信息,请参阅:http://www.sitepoint.com/parsing-xml-with-simplexml/

【讨论】:

  • 在我尝试加载输出后我转储了它,结果如下: object(SimpleXMLElement)#1 (1) { [0]=> string(26) "UserAlreadyExistsException" } 并且切换仍然没有在职的。该死的xml
  • 好的,我想通了。将 switch 更改为: switch((string) $output) ,它现在似乎正在工作。非常感谢您的帮助。
【解决方案2】:

你的 switch 语句对我来说看起来不错。我会质疑变量$odpoved 中的内容。使用 var_dump($odpoved) 查看其中包含的内容,并确保检查前导和尾随空格或隐藏字符(换行符有时很难发现)。

有关 switch 语句分析,请查看http://www.php.net/manual/en/control-structures.switch.php

【讨论】:

  • 这是转储的输出:string(43) "UserAlreadyExistsException" 所以它也包含 在变量中。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-05-12
  • 2010-12-26
  • 1970-01-01
  • 2011-07-30
  • 1970-01-01
  • 2016-03-09
  • 2015-08-21
相关资源
最近更新 更多