2015-02-23 92 views
1

我有一個數組,通過它我希望獲取值並將它們存儲在數據庫中。從數組中的不同索引值獲取值

Array 
(
    [success] => 1 
    [products] => Array 
     (
      [0] => Array 
       (
        [id] => 373 
        [categories] => Array 
         (
          [0] => 1 
          [1] => 15 
          [2] => 28 
         ) 
       ) 

      [1] => Array 
       (
        [id] => 210 
        [categories] => Array 
         (
          [0] => 15 
          [1] => 28 
         ) 
       ) 

      [3] => Array 
       (
        [id] => 209 
        [categories] => Array 
         (
          [0] => 15 
          [1] => 28 
          [2] => 15 
         ) 
       ) 


       ) 

     ) 
) 

我已經提取了所有的數據,但現在我在提取類別中遇到問題。我有桌子誰的觀點是這樣的

id prod_id prod_name product_catid product_subcatid 

在這個數組中,值15是product_catid,28代表product_subcatid。的代碼,通過該我被取出的值是

部分,

if (!empty($array)) 
    { 
     foreach ($array['products'] as $product) 
      { 
        if(isset($product['categories'])) 
         { 
          $product_catid = $product['categories'][1]; 
          $product_subcatid = $product['categories'][2]; 

          $inserts1 = mysql_query("insert into product_category(prod_id,prod_name,product_catid,product_subcatid,product_subsubcatid) values ('".$idd."','".$product_name."','".$product_catid."','".$product_subcatid."','".$product_subsubcatid."')"); 

          $posts[0]['message'] = 'Registered'; 
         } 

      } 
    } 

但問題是第二陣列即[1],product_catid的值已經移位到[0]的索引值和product_subcatid具有轉移到[1]索引值。 現在我卡住了,我無法理解我應該如何獲取和存儲值。會感謝一些幫助。

回答

2

如果您subcat總是最後墜落,cat將遵循以前,只要使用array_pop,而不是明確地指向它。粗糙例如:

if (!empty($array)) { 
    foreach ($array['products'] as $k => $product) { 
     if(isset($product['categories'])) { 

      $product_subcatid = array_pop($product['categories']); 
      $product_catid = array_pop($product['categories']); 

      $db = new PDO('mysql:host=localhost;dbname=database_name', 'username', 'password'); 
      $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 
      $insert = $db->prepare('INSERT INTO product_category (prod_id,prod_name,product_catid,product_subcatid,product_subsubcatid) VALUES (?, ?, ?, ?, ?)'); 
      $insert->execute(array($idd, $product_name, $product_catid, $product_subcatid, $product_subsubcatid)); 
     } 
    } 
} 

Sample Output

另一種方式將它取反:

​​
+0

可以üPLZ幫助我一次?我有一個情況,我有一個數組,我有第一個數組中的3個索引值[0] [1] [2]其中[0] = subcat,[1] = cat和[2] = subcat和下一個數組[ 0] =貓和[1] =子貓,我如何插入2個子貓內的表在不同的行 – kavi 2015-02-23 09:32:10

+0

@ kavi它取決於你如何接近它,先得到貓,然後,由子現在會有兩個子帖子,你如何確定哪個是哪個? – Ghost 2015-02-23 09:36:41

1

另一種解決方案:

$product_subcatid = end($product['categories']); 
$product_catid = prev($product['categories']); 

這樣,你不要修改陣列。