2015-02-23 90 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']); 

这样,你不要修改阵列。