0

我有这个 xml 节点

<file_allegati>
  <allegato id="0" planimetria="0" type="foto">
    <id>0</id>
    <file_path>https://##.jpg </file_path>
  </allegato>
  <allegato id="1" planimetria="1" type="planimetria">
    <id>1</id>
    <file_path>https://##.jpg </file_path>
  </allegato>
</file_allegati>

我想用属性“planimetria = 1”分割图像并将file_path写入自定义字段。

我不能使用 wpallimport 的 [FOREACH] 方法所以我尝试调用名为 set_planimetrie(file_allegati[1]) 的函数

我写了这个 php 函数,但它不起作用。

function set_planimetrie( $allegati ) {
    $result="";
    $xml = new SimpleXMLElement($allegati); 

    foreach($xml->children() as $allegato)
    { 
        if($allegato['type']=='planimetria' && $allegato['planimetria']==1){
            if( $result != ''){$result .=',';}
            $result.= $allegato->file_path;    
        }
    return $result;
    }
}
4

1 回答 1

0

您只获得了的第一个值,foreach因为您使用return了 foreach 中的语句。

的返回类型$allegato['type']SimpleXMLElement。您可以使用__toString或使用(string).

如果您将 return 语句放在 foreach 之外,并使用(string)来获取您的值,您的代码将如下所示:

function set_planimetrie($allegati)
{
    $result = '';
    $xml = new SimpleXMLElement($allegati);

    foreach ($xml->children() as $allegato) {
        if ((string)$allegato['type'] === 'planimetria' && (string)$allegato['planimetria'] === "1") {
            if ($result !== '') {
                $result .= ',';
            }
            $result .= $allegato->file_path;
        }
    }
    return $result;
}

输出php示例

于 2018-02-23T13:49:14.670 回答