更新foreach循环中的关联数组键值

时间:2014-01-30 17:54:08

标签: php arrays

我不知道我的代码有什么问题。

我正在尝试更新qty值,但是当我第二次var_dump数据时,qty不会更新/重写。我错过了什么?什么是正确的方法?

$prod = 647bba344396e7c8170902bcf2e15551;
$qty = 2
var_dump($ordered);

array (size=2)
  '647bba344396e7c8170902bcf2e15551' => 
    array (size=7)
      'rowid' => string '647bba344396e7c8170902bcf2e15551' (length=32)
      'id' => string '545' (length=3)
      'qty' => string '415' (length=3)
      'price' => string '15.573770' (length=9)
      'teza' => string '0' (length=1)
      'name' => string 'Pants 1' (length=14)
      'subtotal' => float 6463.11455
  'd64a340bcb633f536d56e51874281454' => 
    array (size=7)
      'rowid' => string 'd64a340bcb633f536d56e51874281454' (length=32)
      'id' => string '530' (length=3)
      'qty' => string '144' (length=3)
      'price' => string '17.213110' (length=9)
      'teza' => string '0' (length=1)
      'name' => string 'Toys' (length=19)
      'subtotal' => float 2478.68784

            foreach ($ordered as $item) {
                if ($item['rowid'] == $prod)
                    $item['qty'] == $qty;
            }
         var_dump($ordered);      

array (size=2)
  '647bba344396e7c8170902bcf2e15551' => 
    array (size=7)
      'rowid' => string '647bba344396e7c8170902bcf2e15551' (length=32)
      'id' => string '545' (length=3)
      'qty' => string '415' (length=3)
      'price' => string '15.573770' (length=9)
      'teza' => string '0' (length=1)
      'name' => string 'Pants white' (length=14)
      'subtotal' => float 6463.11455
  'd64a340bcb633f536d56e51874281454' => 
    array (size=7)
      'rowid' => string 'd64a340bcb633f536d56e51874281454' (length=32)
      'id' => string '530' (length=3)
      'qty' => string '144' (length=3)
      'price' => string '17.213110' (length=9)
      'teza' => string '0' (length=1)
      'name' => string 'Pants black' (length=19)
      'subtotal' => float 2478.68784

3 个答案:

答案 0 :(得分:1)

试试这个:

        foreach ($ordered as &$item) {  // Get array byref
            if ($item['rowid'] == $prod){
                $item['qty'] = $qty;  // Fixed evaluation
            }
        }

        var_dump($ordered);

答案 1 :(得分:0)

== vs =

当您想要分配时,看起来像是评估。

这是做什么的?

$item['qty'] == $qty;

答案 2 :(得分:0)

你的错误

php赋值运算符和比较运算符

=

用于赋值(赋值运算符)

==

用于比较值

    foreach ($ordered as $item) {
          if ($item['rowid'] == $prod)
              $item['qty'] = $qty;          

   }
相关问题