62471


**環境**  
TwitterOAuthライブラリ使用

* * *

**画像数が2で固定の場合**

[code]

    $connection = new TwitterOAuth(API_KEY, API_SECRET, ACCESS_TOKEN, ACCESS_SECRET);
    $m1 = $connection->upload('media/upload', ['media' => './img/1.jpg']);
    $m2 = $connection->upload('media/upload', ['media' => './img/2.jpg']);
    $parameters = [
      'status' => '文字列',
      'media_ids' => implode(',', [
        $m1->media_id_string,
        $m2->media_id_string
      ])
    ];
    
[/code]

* * *

**画像数が1～4で変動する場合**  
最初に考えた疑似コード

[code]

    if(画像数が1枚){
      $m1 = $connection->upload('media/upload', ['media' => './img/1.jpg']);
      $parameters = [
        'status' => '文字列',
        'media_ids' => implode(',', [
          $m1->media_id_string
        ])
      ];
    }elseif(画像数が2枚){
      $m1 = $connection->upload('media/upload', ['media' => './img/1.jpg']);
      $m2 = $connection->upload('media/upload', ['media' => './img/2.jpg']);
      $parameters = [
        'status' => '文字列',
        'media_ids' => implode(',', [
          $m1->media_id_string,
          $m2->media_id_string
        ])
      ];
    }elseif(画像数が3枚){
    
    }elseif(画像数が4枚){
    
    }
    
[/code]

もう少しスマートに書くには？


CC BY-SA 4.0
2020-01-23T00:21:54.700
62470
2020-01-23T01:16:50.557
7886
question
php twitter
Twitter複数画像アップロード時に、画像数が1～4枚で変動する場合の動的対応


スマートという定義がいまいち曖昧ですが、  
・繰り返し処理にはfor文を使う  
ということであれば

[code]

    $image_num = 画像数;
    $image_media_ids = [];
    for ($i = 1; $i++; $i <= $image_num) {
        $m = $connection->upload('media/upload', ['media' => './img/{$i}.jpg']);
        $image_media_ids[] = $m->media_id_string;
    }
    
    $parameters = [
      'status' => '文字列',
      'media_ids' => implode(',', $image_media_ids)
    ];
    
[/code]

これがシンプルで見やすいコードでしょうか？


CC BY-SA 4.0
2020-01-23T01:16:50.557
62471
2020-01-23T01:16:50.557
22665
62470
answer