Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/255.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php SimpleXML动态属性_Php_Xml_Loops_Foreach_Simplexml - Fatal编程技术网

Php SimpleXML动态属性

Php SimpleXML动态属性,php,xml,loops,foreach,simplexml,Php,Xml,Loops,Foreach,Simplexml,嘿,我很难想出如何为这个生成代码 $revImages = $revXML->addChild('images'); $revImage = $revImages->addChild('image'); $revImage->addAttribute('src', '001.jpg'); 最后一行是我需要的静态条目。是否有一个foreach语句可以用于根据目录中的图像自动生成最后一行,以便它以这样的方式输出 <images> <image src =

嘿,我很难想出如何为这个生成代码

$revImages = $revXML->addChild('images');
$revImage = $revImages->addChild('image');
$revImage->addAttribute('src', '001.jpg');
最后一行是我需要的静态条目。是否有一个foreach语句可以用于根据目录中的图像自动生成最后一行,以便它以这样的方式输出

<images>
    <image src = "001.jpg"/>
    <image src = "002.jpg"/>
    <image src = "003.jpg"/>
    <image src = "004.jpg"/>
    <image src = "005.jpg"/>
    <image src = "006.jpg"/>
    <image src = "007.jpg"/>
    <image src = "008.jpg"/>
    <image src = "009.jpg"/>
    <image src = "010.jpg"/>
</images>

提前感谢

就是这样:

$revImages = $revXML->addChild('images');
foreach ($some_data as $value) {
    // yes, everytime you need to create new `$revImage`
    $revImage = $revImages->addChild('image');
    $revImage->addAttribute('src', $value);
}
其中,
$some_data
是您拥有的值数组

更新:

if ($handle = opendir($path)) { 
    // create parent node before while-loop
    $revImages = $revXML->addChild('images'); 
    while (false !== ($entry = readdir($handle))) { 
        if ($entry != "." && $entry != "..") { 
            // yes, everytime you need to create new $revImage 
            $revImage = $revImages->addChild('image'); 

            // `$entry` is already a filename, there's no need to iterate over it
            $revImage->addAttribute('src', $entry); 
        } 
    } 
    closedir($handle); 
}
使用函数(查找与模式匹配的路径名)的解决方案:


用一个简单的
foreach
001.jpg
来自何处?来自目录中的图像名称。相反,我需要在一个目录中查找并获取图像名称并将其输出。因此,我必须将$some_数据设置为这样的搜索函数[code]$some_data=if(is_dir($path)){if($dh=opendir($path)){while($file=readdir($dh))!==false{echo$file.
“closedir($dh);};[/code]是的,设置
$some_data
并对其进行迭代了解到了,我会试一试并报告回来再次感谢您的帮助和快速响应为什么不在扫描文件夹时直接将代码添加到while循环中?无需创建额外的数组,然后用另一个循环进行迭代。如果($handle=opendir($path)){while(false!==($entry=readdir($handle)){if($entry!=“&&&&$entry!=”。”{$revImages=$revXML->addChild($images”);foreach($entry as$value){//是的,每次需要创建新的
$revImage
$revImages=$revImages->addChild($image'));$revImage->addAttribute($src',$value);}}}}}}closedir($handle);}如果可以的话,我可以再问一个问题吗?我怎么能只显示文件名而不显示整个url路径?我没有->而是尝试了$revImage->addAttribute($src',basename($filepath));没有真正起作用为任何需要它的人得到它我把foreach(glob($path.*.jpg)误认为$filepath){$filepath=basename($filepath);$revImage=$revImages->addChild('image');$revImage->addAttribute('src',basename($filepath));}
foreach (glob("*/yourdirectory/*.jpg") as $filepath) {
    $revImage = $revImages->addChild('image');
    $revImage->addAttribute('src', $filepath);
}