首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法将xml中的关键字与php连接起来

无法将xml中的关键字与php连接起来
EN

Stack Overflow用户
提问于 2012-07-17 02:05:40
回答 2查看 203关注 0票数 0

我有以下问题:

我不能在一个字符串中连接所有的关键字。它返回一个数组。我试了好几个小时,但还没成功。

代码如下:

( if条件在一个循环中)

代码语言:javascript
复制
$keyword="";
$entry=0;

if ($index=="keywordterm){
            $kword=$arrObjData[$index]; // takes the value of keywordterm
            $kwords[$entry]=$kword;
            echo "keywords[$entry]: ".$kwords[$entry]."</br></br>";
            $keywordd.=$kwords[$entry]." | ";   
            $entry++;           
}
print_r($keywordd);
echo "Keywords: ".$keywordd."<br><br>";

结果是:

代码语言:javascript
复制
keywords[1]: telecommunication computing

keywords[2]: multi-agent systems

keywords[3]: state estimation

keywords[4]: control engineering computing

keywords[5]: telecommunication control

keywords[6]: Matlab-Simulink platform

keywords[7]: networked multiagent systems

keywords[8]: information sharing

keywords[9]: multiple cooperative agents

keywords[10]: networked control system

Array ( )
Keywords: Array

我想要这样的东西:

代码语言:javascript
复制
Keywords: telecommunication computing | multi-agent systems | state estimation.........

XML代码如下:

代码语言:javascript
复制
<keywordset keywordtype="Inspec">
      <keyword>
        <keywordterm><![CDATA[computer aided manufacturing]]></keywordterm>
      </keyword>
      <keyword>
        <keywordterm><![CDATA[semantic Web]]></keywordterm>
      </keyword>
      <keyword>
        <keywordterm><![CDATA[factory automation]]></keywordterm>
      </keyword>
      <keyword>
        <keywordterm><![CDATA[ontologies (artificial intelligence)]]></keywordterm>
      </keyword>
      <keyword>
        <keywordterm><![CDATA[knowledge based systems]]></keywordterm>
      </keyword>
      <keyword>
        <keywordterm><![CDATA[inference mechanisms]]></keywordterm>
      </keyword>
    </keywordset>
    <keywordset keywordtype="InspecFree">
      <keyword>
        <keywordterm><![CDATA[reconfigurable manufacturing systems]]></keywordterm>
      </keyword>
      <keyword>
        <keywordterm><![CDATA[semantic Web services]]></keywordterm>
      </keyword>
      <keyword>
        <keywordterm><![CDATA[factory automation]]></keywordterm>
      </keyword>
      <keyword>
        <keywordterm><![CDATA[ontologies]]></keywordterm>
      </keyword>
      <keyword>
        <keywordterm><![CDATA[explicit semantics]]></keywordterm>
      </keyword>
      <keyword>
        <keywordterm><![CDATA[logical reasoning]]></keywordterm>
      </keyword>
      <keyword>
        <keywordterm><![CDATA[autonomous manufacturing orchestration]]></keywordterm>
      </keyword>
      <keyword>
        <keywordterm><![CDATA[knowledge based systems]]></keywordterm>
      </keyword>
    </keywordset>

提前感谢并为这个loooong代码道歉..

所有代码是这样的:

代码语言:javascript
复制
$keywordd="";
$entry=0;
$kwords=array();
$xmlUrl = "9424.xml"; // XML feed file/URL

$xmlStr = file_get_contents($xmlUrl);

$xmlObj = simplexml_load_string($xmlStr);

$arrXml = objectsIntoArray($xmlObj, $entry, $keywordd);

function objectsIntoArray(&$arrObjData, &$entry, &$keywordd, $arrSkipIndices = array()) {

if (is_array($arrObjData)) {

    echo "<pre>";

        //print_r($arrObjData);
        echo "</pre>";  

        foreach ($arrObjData as $index => $value) {

if ($index=="keywordterm"&&$index!="0"){
            $kword=$arrObjData[$index];
            echo "<b>KEYWORD: </b>".$kword."</br></br>";
            $kwords[$entry]=$kword;
            echo "keywords[$entry]: ".$kwords[$entry]."</br></br>";
            $keywordd.=$kwords[$entry]." | ";
            //echo $keywordd."<br><br>";
            $entry++;
            //echo "entry: ".$entry."<br>";

        }
        elseif ($index=="joursec"&&$index!="0"){
            //print_r($keywordd);
            echo "<b>Keywords: </b>".$keywordd."<br><br>";
        }
}
}
EN

回答 2

Stack Overflow用户

发布于 2012-07-17 02:14:32

正如我所见,既然$keywordd是一个字符串,你不能用print_r打印它吗?如果只使用"echo $keywordd“,会发生什么?

您应该使用implode()将数组转换为字符串吗?

示例:

代码语言:javascript
复制
$array = array('lastname', 'email', 'phone');
$comma_separated = implode(",", $array);
echo $comma_separated; // lastname,email,phone
票数 1
EN

Stack Overflow用户

发布于 2012-07-17 02:21:03

你试过使用implode吗?

代码语言:javascript
复制
$array = array('lastname', 'email', 'phone');
$comma_separated = implode(" | ", $array);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11509968

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档