【问题标题】:idea for array matching数组匹配的想法
【发布时间】:2014-08-11 21:00:58
【问题描述】:

我有一个问题,如果有人可以给我一个答案,我会非常高兴和thsnkful。所以,我有这个数组,从这段代码中可以看出:

print_r($this->session->userdata('cart'));

结果:

Array ( [product_name] => Array ( [0] => Optoma ML1000 [1] => Smart Board i885 [2] => Optoma W316 ) [product_price] => Array ( [0] => 12000 [1] => 3000 [2] => 652 ) [product_quantity] => Array ( [0] => 1 [1] => 1 [2] => 1 ) [total] => 15652 )

谁能告诉我如何匹配所有这些并制作一个 foreach 来显示它们。 示例:

'product_name' = Optoma ML1000; 'product_price' = 12000; 'product_quantity' = 1

谢谢!

【问题讨论】:

  • “全部匹配”是什么意思
  • 您已经用答案标记了您的问题:foreach。

标签: php arrays session foreach


【解决方案1】:

你需要做的就是创建一个数组,你必须用数组的键来存储每个数组的第一个元素值:

$Result = [];
foreach($this->session->userdata('cart') as $key => $value)
   $Result[$key] = $value[0];

现在你需要的所有数据都在$Result

$Result['product_name']; // contains the value "Optoma ML1000"
$Result['product_price']; // contains the value 12000
$Result['product_quantity']; // contains the value 1

【讨论】:

    【解决方案2】:
    $a = Array ( 
        "product_name" => Array ("Optoma ML1000",  "Smart Board i885", "Optoma W316"), 
        "product_price" => Array ( 12000,3000,652 ),
        "product_quantity" => Array ( 1,1,1 ),
        "total" => 15652 );
    
    $iterator = new MultipleIterator();
    $iterator->attachIterator (new ArrayIterator ($a ['product_name']));
    $iterator->attachIterator (new ArrayIterator ($a ['product_price']));
    $iterator->attachIterator (new ArrayIterator ($a ['product_quantity']));
    
    foreach ($iterator as $value)
    {
        var_dump ($value);
        // or what have you
    }
    

    输出是:

    array (
      0 => 'Optoma ML1000',
      1 => 12000,
      2 => 1,
    )array (
      0 => 'Smart Board i885',
      1 => 3000,
      2 => 1,
    )array (
      0 => 'Optoma W316',
      1 => 652,
      2 => 1,
    )
    

    【讨论】:

      【解决方案3】:

      您的数组设置有点奇怪,但这应该可以工作...

      $items = print_r($this->session->userdata('cart'));
      for ($i=0; $i < count($items['product_name']); $i++) { 
          echo $items['product_name'][$i];
          echo $items['product_price'][$i];
          echo $items['product_quantity'][$i];
      }
      

      理想情况下,应该像这样设置......

      array(
          array(
              'product_name' => 'Optoma ML1000',
              'product_price' => 12000,
              'product_quantity' => 1
          ),
          array(
              'product_name' => 'Smart Board i885',
              'product_price' => 3000,
              'product_quantity' => 1
          ),
          array(
              'product_name' => 'Optoma W316',
              'product_price' => 652,
              'product_quantity' => 1
          ),
      );
      

      【讨论】:

        【解决方案4】:

        您可以通过执行以下操作同时迭代三个内部数组中的每一个:

        $cart = $this->session->userdata('cart');
        foreach(array_map(null, $cart['product_name'],
                                $cart['product_price'],
                                $cart['product_quantity']) as $x) {
        
          print_r(sprintf("product_name: %s, product_price: %s, product_quantity: %s\n", $x[0], $x[1], $x[2]));
        }
        

        【讨论】:

          猜你喜欢
          • 2021-04-09
          • 2016-03-05
          • 1970-01-01
          • 2010-10-18
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多