0

我已经为此工作了很长时间,现在我已经准备好屈服并手动完成,但是因为我已经投入了很多时间,所以我真的需要完成这个。

我有一个 csv 文件,其中包含在BuddyPress中创建群组所需的信息

我正在使用来自 bp-groups.php (http://pastie.org/1430135) 的函数和这个脚本:

<?php
ini_set('display_errors', true);
error_reporting(E_ALL);
include "../../../wp-load.php";

$groups = array();

if (($handle = fopen("groupData.csv", "r")) !== FALSE) {
    while (($data = fgetcsv($handle, 1000, ";")) !== FALSE) {
        $group = array('group_id'    => $data[0],
                'creator_id'  => '1',
                'name'        => $data[1], 
                'description' => $data[2], 
                'slug' => groups_check_slug(sanitize_title(esc_attr($data[3]))), 
                'date_created' => gmdate( "Y-m-d H:i:s" ), 
                'status' => 'public', 
                'enable_forum' => '1'
 );
        $groups[] = $group;
    }   
    fclose($handle);
}

foreach ($groups as $group) {
    groups_create_group($group);
} 

print_r($groups);
?>

从 print_r 我得到:

Array
(
    [0] => Array
    (
        [group_id] => 2
        [creator_id] => 1
        [name] => GroupName1 
        [description] => Interesting description1 
        [slug] => groupname1 
        [date_created] => 2011-01-05 02:33:54 
        [status] => public
        [enable_forum] => 1
    )
    [1] => Array
    (
        [group_id] => 3 
        [creator_id] => 1
        [name] => GroupName2
        [description] => Interesting description2
        [slug] => groupname2
        [date_created] => 2011-01-05 02:33:54
        [status] => public
        [enable_forum] => 1
    )
)

但是,目的是从 csv 文件创建组,但事实并非如此。我究竟做错了什么?

4

1 回答 1

0

根据我的经验,PHP 的 CSV 东西不能很好地工作,或者,它只适用于某种格式的文件。CSV 文件可能会以不同的格式结束,具体取决于您制作它的方式,例如 Excel。您可能必须仅使用 fgets() 而不是 fgetcsv() 创建一个自定义解析器,然后分解在分隔符上拉入的每一行,这几乎是 fgetcsv 应该做的。

此外,您可能会考虑类似

while(!feof($handle))
{
    $data = fgetcsv($handle, 1000, ";");
    //stuff
}
于 2011-01-05T03:38:24.923 回答