foreach循环运行一次

时间:2016-01-20 05:24:36

标签: php arrays wordpress loops foreach

所以我的foreach循环只运行一次有问题。

我有$ file_url变量的以下数据。

$file_url = "http://www.somedomain.com/12355/1.jpg,http://www.somedomain.com/12355/2.jpg,http://www.somedomain.com/12355/3.jpg,http://www.somedomain.com/12355/4.jpg";

现在我的代码看起来像这样:

function fetch_media($file_url,$vin,$cacheid) {
    require_once(ABSPATH . 'wp-load.php');
    require_once(ABSPATH . 'wp-admin/includes/image.php');
    global $wpdb;

    if(!$vin) {
        $vin = $cacheid;
    }

    $vin = $vin . '/';

    //directory to import to    
    $artDir = "wp-content/uploads/vehiclephotos/$vin";

    //if the directory doesn't exist, create it 
    if(!file_exists(ABSPATH.$artDir)) {
        mkdir(ABSPATH.$artDir);
    }

    $file_url = explode(",", $file_url);
    $gallery_images = array();

    foreach ($file_url as $url) {

    //rename the file... alternatively, you could explode on "/" and keep the original file name
    $filename = array_pop(explode("/", $url));

        if (@fclose(@fopen($url, "r"))) { //make sure the file actually exists
            copy($url, ABSPATH.$artDir.$filename);

            $siteurl = get_option('siteurl');
            $file_info = getimagesize(ABSPATH.$artDir.$filename);

            //create an array of attachment data to insert into wp_posts table
            $artdata = array();
            $artdata = array(
                'post_author' => 1, 
                'post_date' => current_time('mysql'),
                'post_date_gmt' => current_time('mysql'),
                'post_title' => $filename, 
                'post_status' => 'inherit',
                'comment_status' => 'closed',
                'ping_status' => 'closed',
                'post_name' => sanitize_title_with_dashes(str_replace("_", "-", $filename)),
                'post_modified' => current_time('mysql'),
                'post_modified_gmt' => current_time('mysql'),
                'post_type' => 'attachment',
                'guid' => $siteurl.'/'.$artDir.$filename,
                'post_mime_type' => $file_info['mime'],
                'post_excerpt' => '',
                'post_content' => ''
            );

            $uploads = wp_upload_dir();
            $save_path = $uploads['basedir'].'/vehiclephotos/'.$vin.$filename;

            //insert the database record
            $attach_id = wp_insert_attachment($artdata, $save_path);

            //generate metadata and thumbnails
            if ($attach_data = wp_generate_attachment_metadata( $attach_id, $save_path)) {
                wp_update_attachment_metadata($attach_id, $attach_data);
            }

            array_push($gallery_images,$attach_id);
            }

    }

    return serialize($gallery_images);
}

所以我得到的输出是序列化数组:

a:1:{i:0;i:103525;}

哪个好,但是因为有4个数组项,它应该循环4次并给我带有4个attachment_id的序列化数据。其中的所有其他代码运行良好一次,它从URL下载图像,它重命名它并创建照片的所有缩略图大小。

知道我做错了吗?

4 个答案:

答案 0 :(得分:0)

排除故障时,请移除@-operator以查看您获得的错误。所以:

if (@fclose(@fopen($url, "r"))) { //make sure the file actually exists

变为:

if (fclose(fopen($url, "r"))) { //make sure the file actually exists

您可以将此行简化为:

if (file_exists($url)) {

答案 1 :(得分:0)

该代码没问题。因此,您的输入很可能是错误的。与其他人一样,您发布的代码并不表示您正在记录<header> <div> <img id="logo" src="http://arkelectronics.ca/arkLogo.png" alt="Logo"> <h1>ARK Electronics</h1> </div> </header> header { width: 100%; text-align:center; border-bottom:2px solid orange; } header>div{width:600px;margin:0 auto;} 。我猜想<article>数组有四个项目的陈述实际上是不真实的。

答案 2 :(得分:0)

{{1}}

在foreach循环中使用try和catch它会继续运行,你可以看到foreach循环中的错误是什么错误

答案 3 :(得分:0)

看起来这个问题并不像有人提到的那样循环。我在第一张图片后将文件复制到我的服务器时收到错误...这完全是一个完全不同的问题。

感谢您的指导,让我找到了错误。