【问题标题】:fetch values from different index value in array从数组中的不同索引值中获取值
【发布时间】:2015-04-24 13:04:39
【问题描述】:

我有一个数组,我希望通过它获取值并将它们存储在数据库中。

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] 索引值。 现在我被卡住了,无法理解我应该如何获取和存储值。将不胜感激。

【问题讨论】:

    标签: php arrays for-loop multidimensional-array foreach


    【解决方案1】:

    另一种解决方案:

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

    这样你就不用修改数组了。

    【讨论】:

      【解决方案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

      另一种方法是反转它:

      $product['categories'] = array_reverse($product['categories']);
      $product_subcatid =  $product['categories'][0];
      $product_catid =  $product['categories'][1];
      

      【讨论】:

      • 你能再帮我一次吗???我有一种情况,我有一个数组,其中我在第一个数组 [0][1][2] 中有 3 个索引值,其中 [0]=subcat、[1] =cat 和 [2] = subcat 以及下一个数组 [ 0] = cat 和 [1] = subcat,如何在不同行的表中插入 2 个 subcat
      • @kavi 这取决于你想如何接近它,首先得到猫,然后通过子猫循环它,因为你现在有两个子猫,你如何确定哪个是哪个?
      猜你喜欢
      • 2016-02-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多