0

次のコードでは、関数はユーザー名のリストを取得し、それらを配列に入れてから、関数 get_all_friends と呼ばれる関数を実行します。コードは正常に動作し、エラーは発生しません。私の質問は、ユーザー名が大量にある場合にコードを調整する方法です。

ファイルから読み取るのと同様に、すべてのユーザー名の名前を含め、それらを使用して配列に入れます

$file_handle = fopen("users.txt")

お知らせ下さい !

<?PHP
    $user1 = "usernamehere";
    $user2 = "usernamehere";
    $user3 = "usernamehere";
    $u[] = $user1;
    $u[] = $user2;
    $u[] = $user3;

    function get_all_friends($users) 
    {
        $connection = new TwitterOAuth(CONSUMER_KEY, CONSUMER_SECRET, TOKEN_KEY, TOKEN_SECRET);
        $list = array();
        foreach($users as $user)
        {
            $result = $connection->get( 'friends/ids', array(
            "screen_name"=> $user)
            );

            foreach($result->ids as $friend) 
            {
                $list[] = $friend;
            }

        }
        return $list;
    }

    //call the function
    $result = get_all_friends($u);

    foreach($result as $res)
    {
        $query = "INSERT INTO friends (userid, name, grade, flag) VALUES ($res, 'name', 100, 0 ) ";
        mysql_query($query);    
    }

    //to print the databse result
    echo "row<br />";
    $res = mysql_query("SELECT * FROM friends");  
    while ($row = mysql_fetch_assoc($res)) 
    {
        print_r($row);
    }
?>
4

2 に答える 2

1

次のようなものが機能するはずです(テストされていません):

$filename = "users.txt";
$file_handle = fopen($filename, "r");
$contents = fread($file_handle, filesize($filename));
$usernames = preg_split("/ (,|\\n) /", $contents);
fclose($file_handle);

ユーザー名はコンマまたは改行で区切る必要があります。

ただし、ユーザー名が改行またはコンマでのみ区切られることが確実な場合は、次のコードの方が高速です。

$filename = "users.txt";
$file_handle = fopen($filename, "r");
$contents = fread($file_handle, filesize($filename));
// new line:
$usernames = explode("\n", $contents);
// or comma:
$usernames = explode(",", $contents);
fclose($handle);

$usernames の定義を 1 つだけ選択してください。

于 2012-09-17T08:43:56.987 に答える
0

具体的に質問に答えるには、file(..)「ファイル全体を配列に読み込む」をチェックしてください

http://php.net/manual/en/function.file.php

おそらくこの方法は望まないでしょうが、ファイルが大きい場合は、順番に読み取るか、何らかの直接インポートを行う方がはるかに優れています。

于 2012-09-17T08:43:33.743 に答える