数组操作php的麻烦

时间:2014-07-02 11:33:23

标签: php arrays

我现在已经尝试了几个小时了,我无法完成我想要的工作,我相信你们会比我做得更好:

我有两个这样的数组($ aOldSales):

array (size=24)
  0 => 
    array (size=5)
      'cslId' => string '1844' (length=4)
      etc..
  1 => 
    array (size=5)
      'cslId' => string '1725' (length=4)
      etc..
  2 => etc...

并且像这样($ aOldSalesInfos(big one)):

array (size=390)
  0 => 
    array (size=8)
      'careId' => string '15804' (length=5)
       more infos here...
      'cslId' => string '1844' (length=4)
  1 => 
    array (size=8)
      'careId' => string '12031' (length=5)
       more infos here...
      'cslId' => string '1844' (length=4)
  2 => etc...

我真正想要的是($ aOldSales):

array (size=24)
  0 => 
    array (size=6)
      'cslId' => string '1844' (length=4)
      'caresinfos' => 
        array (size=8)
          'careId' => string '15804' (length=5)
           more infos...
           more infos...
          'cslId' => string '1844' (length=4)
        array (size=8)
          'careId' => string '15805' (length=5)
           more infos...
           more infos...
          'cslId' => string '1844' (length=4)

到目前为止我尝试了什么(我尝试了不同的小东西,但这就是想法):

for($i=0;$i<count($aOldSales);$i++)
{
    for($cpt=0;$cpt<count($aOldSalesInfos);$cpt++)
    {
        if($aOldSales[$i]['cslId'] == $aOldSalesInfos[$cpt]['cslId'])
        {
            $aOldSales[$i]['caresinfos'] = $aOldSalesInfos[$cpt];
        }
    }
}

我得到了一个令人鼓舞的结果,因为'careinfos'充满了 1 阵列,并且正确地“关注(考虑它作为产品)”但不是全部......

我希望它足够清楚,如果你有任何疑问,我也不会太困惑,或者如果我忘记了,请不要犹豫,发表评论!

非常感谢你们:)

1 个答案:

答案 0 :(得分:1)

你的内循环代码:

if ($aOldSales[$i]['cslId'] == $aOldSalesInfos[$cpt]['cslId']) {
    $aOldSales[$i]['caresinfos'] = $aOldSalesInfos[$cpt];
}

每次都覆盖相同的数组元素;要创建越来越多的元素,您需要使用[]运算符:

if ($aOldSales[$i]['cslId'] == $aOldSalesInfos[$cpt]['cslId']) {
    $aOldSales[$i]['caresinfos'][] = $aOldSalesInfos[$cpt];
}

另请参阅:Creating/modifying with square bracket syntax