2017-11-10 19 views
0

私はforループの中にクエリを持っており、すべての配列要素の製品名を取得しています。今、私の配列のすべての要素で、私は同じshipping_idですべての製品名を連結したいIDを持っています。値を持つidクエリループ内で同じIDを持つ文字列concat配列を作成する

アレイ名:

$first = true; 
    $temp_ship_id = ""; 
    $product_list = ""; 
    foreach ($ids as $product) { 
     $productname = $this->getproductname($product[0][product_id]); 
     // if($first) { 
     //  $temp_ship_id = $product[0][shipping_id];      
     //  $first = false; 
     // } 
     // if($product[0][shipping_id] == $temp_ship_id) { 
     //  $product_list .= $productname."; 
     // } else { 
     //  $product_list .= $productname."; 
     //  //$product_list = "";      
     //  $temp_ship_id = $product[0]->shipping_id; 
     // } 
    } 

    public function getproductname($product_id) { 
      $product = DB::table('products')->select('product_name') 
       ->where(['products.product_id'=>$product_id]) 
       ->first(); 


      return $product->product_name;  
    } 

何午前:

Array 
(
    [0] => Array 
     (
      [product_id] => 1 
      [shipping_id] => 1 
     ) 
    [1] => Array 
     (
      [product_id] => 2 
      [shipping_id] => 1 
     ) 

    [2] => Array 
     (
      [product_id] => 1 
      [shipping_id] => 2 
     ) 
) 

は今、私はこれらを使用してこのコードを作ったここ

私は、これらのような値を持つ私の配列を持っています私はやっている、私は最初の船積みのIDを取得し、それを格納していると私は条件を作った場合は、私はconcat製品名を行くが、私は私のロジックが悪い参照してください。

他の方法でお手伝いしてください。次のようなコード行を使用してください。

答えて

1

以下の内容は、ご質問がある場合はお知らせください。

<?php 
    $concat = array(); 
    $array = array(array('product_id'=>1, 'shipping_id'=>1, 'product_name' => 'a'), array('product_id'=>2, 'shipping_id'=>1, 'product_name' => 'b'), array('product_id'=>3, 'shipping_id'=>2, 'product_name' => 'c'), array('product_id'=>4, 'shipping_id'=>1, 'product_name' => 'd')); 
    foreach($array as $row) { 
     if(isset($concat[ $row['shipping_id'] ])) { 
      $concat[ $row['shipping_id'] ] .= ',' . $row['product_name']; 
     } else { 
      $concat[ $row['shipping_id'] ] .= $row['product_name']; 
     } 
    } 
    var_dump($concat); 
?> 
+1

ありがとう私はこれを調整します、私は後で質問があります。 –

+0

あなたの答えは正しいです。私を助けてください。私は私の申し込みに誤りがあります。多分私は論理的に間違っています。私はエラーが定義されていませんオフセット:7 foreach($ idsは$ updateprod){ $ productname = $ this-> updateProductQty($ updateprod [0] - > product_id、$ updateprod [0] - > quantity); $ concat [$ updateprod [0] - > shipping_id]。= '、'。 if(isset($ concat [$ updateprod [0] - shipping_id)))) $ productname; } else { $ concat [$ updateprod [0] - > shipping_id]。= $ productname; } } print_r($ concat); –

+0

'$ concat [$ updateprod [0] - > shipping_id] = $ productname;'はあなたの 'else'文で' $ concat [$ updateprod [0] - > shipping_id] = $ productnameです。 'あなたは余分な' .'を持っています。 – Erik

関連する問題