Php 更新数组的值

Php 更新数组的值,php,arrays,Php,Arrays,如果iteminfo等于某个主题,如何更新itemprices中的值 User( [name] => xxxx [phone] => xxxxx [email]xxxxx [itemprices] => Array ( [0] => 1.00 [1] => 1.00 ) [iteminfo] => Array ( [0] => Chemistry [1] => Biology ) ) 一种可能的办法: $subject = 'Chemistry

如果iteminfo等于某个主题,如何更新itemprices中的值

User(
[name] => xxxx
[phone] => xxxxx
[email]xxxxx
[itemprices] => Array ( [0] => 1.00 [1] => 1.00 )
[iteminfo] => Array ( [0] => Chemistry [1] => Biology ) 
)
一种可能的办法:

$subject = 'Chemistry';
$index = array_search($subject, $user->iteminfo);
if (false !== $index) {
  $user->itemprices[$index] = $newvalue;
}
说明:首先,在
iteminfo
数组中查找给定主题的索引。如果确实存在,则使用该索引更新
itemprices
中的相应值

但实际上,我更愿意将数据重新排列到关联数组中,其中所有键分别对应于主题,所有值分别对应于它们的价格。这很容易做到:

这样您就不必再使用
array\u search
,直接通过主题键访问价格信息:

$user->itemdata[$subject] = $newvalue;

您能进一步解释一下您想做什么吗?如果iteminfo中存在多个
$subject
,该怎么办?(这是一个糟糕的数组,我同意)然后必须定义额外的标准-这些重复主题的
itemprices
部分应该更新。但是,它似乎不在给定任务的范围内。我尝试过上面的代码,但其中一些项目会更新所有价格,即使我只为化学科目设置了条件,为什么会这样?显示您正在使用的代码-如果您将其添加到问题中会更好(顺便说一句,为什么没有任何代码?),但如果它太大,使用pastebin或类似服务。
$user->itemdata[$subject] = $newvalue;