2017-03-03 164 views
0

我从CSV导入的阵列。阵列看起来像这样添加阵列阵列PHP

Array 
(
    [0] => Array 
     (
      [DOCategory] => IM 
      [ToCustomerCode] => M-CBC 
      [ExternalDocNo] => DRDOC-DJ-GBAR10-25 
      [Item] => S160373 
      [Quantity] => 4 
      [Remark2] => TEST 
     ) 

    [1] => Array 
     (
      [DOCategory] => IM 
      [ToCustomerCode] => M-CBD 
      [ExternalDocNo] => DRDOC-DJ-GBAR10-25 
      [Item] => S160373 
      [Quantity] => 5 
      [Remark2] => TEST2 
     ) 

    [2] => Array 
     (
      [DOCategory] => IM 
      [ToCustomerCode] => M-CJ 
      [ExternalDocNo] => DRDOC-DJ-GBAR10-25 
      [Item] => S160373 
      [Quantity] => 5 
      [Remark2] => TEST3 
     ) 

    [3] => Array 
     (
      [DOCategory] => IM 
      [ToCustomerCode] => M-CL 
      [ExternalDocNo] => DRDOC-DJ-GBAR10-25 
      [Item] => S160373 
      [Quantity] => 4 
      [Remark2] => TEST4 
     ) 

    [4] => Array 
     (
      [DOCategory] => IM 
      [ToCustomerCode] => M-CRG 
      [ExternalDocNo] => DRDOC-DJ-GBAR10-25 
      [Item] => S160373 
      [Quantity] => 4 
      [Remark2] => TEST5 
     ) 

    [5] => Array 
     (
      [DOCategory] => IM 
      [ToCustomerCode] => M-CRGM 
      [ExternalDocNo] => DRDOC-DJ-GBAR10-25 
      [Item] => S160373 
      [Quantity] => 4 
      [Remark2] => TEST6 
     ) 

    [6] => Array 
     (
      [DOCategory] => IM 
      [ToCustomerCode] => M-CRSB 
      [ExternalDocNo] => DRDOC-DJ-GBAR10-25 
      [Item] => S160373 
      [Quantity] => 4 
      [Remark2] => TEST7 
     ) 

) 

但现在我想添加一个会话。所以我的数组会看起来像这样。

[0] => Array 
     (
      [DOCategory] => IM 
      [ToCustomerCode] => M-CBC 
      [ExternalDocNo] => DRDOC-DJ-GBAR10-25 
      [Item] => S160373 
      [Quantity] => 4 
      [Remark2] => TEST 
      [session] => .... 
     ) 

[session]从这个

$random = md5(uniqid($userlogin, true)); 
$new = array('session' => $random); 

那么这里是我到目前为止

$x=0; 
        while(($line = fgetcsv($f)) !== false) { 
         $data[] = $line; 
        } 
        for($x=0;$x<count($data);$x++){ 
         if($x != 0) { 
          $newArray[] = array_combine($data[0], $data[$x]); 
          $newArrays[] = $new; 
         } 
        } 
       $newArray = array_push($newArray,$newArrays); 
       echo "<pre>";print_r($newArray); 

试图从我echo "<pre>";print_r($newArray);结果是8。所以我怎么能达到我想要的。预先感谢并对我的英语不好。

+1

为什么不只是使用for或foreach语句遍历数组并添加会话密钥/值? – pteronewone

回答

1

您的代码很奇怪,但试试这个:

$x=0; 
while(($line = fgetcsv($f)) !== false) { 
    $data[] = $line; 
} 
for($x=0;$x<count($data);$x++){ 
    if($x != 0) { 
     $newArray[] = array_combine($data[0], $data[$x]); 
     $newArray[$x]["session"] = $new; 
    } 
} 
echo "<pre>";print_r($newArray); 

你也可以跳过临时数组,如果你不需要它:

$x=0; 
while(($line = fgetcsv($f)) !== false) { 
    $data[] = $line; 
} 
for($x=0;$x<count($data);$x++){ 
    if($x != 0) { 
     $data[$x]["session"] = $new; 
    } 
} 
echo "<pre>";print_r($data); 
+0

我仍然需要这部分'$ newArray [] = array_combine($数据[0],$数据[$ X]);' – YVS1102

+0

确定,所以只在阵列添加到它的下一行。 '$ newArray [$ x] [“session”] = $ new;' – gbolo

+0

@ YVS1102如果它对你有用,请接受答案... – gbolo

1

您可以使用此功能

$arr1= array_merge($arr1, $arr2);

+0

它像这样['] =>数组 ( [DOCategory] => IM [ToCustomerCode] => M-华润雪花 [ExternalDocNo] => DRDOC-DJ-GBAR10-25 [项目] => S160373 [数量] => 4 [备注2] => TEST7 ) [会议] => e3ba1d241080830f2638be5a91debd69' – YVS1102

+0

请说更清楚的麻烦,我为使用移动网络,所以我不能清楚地看到 –

0

循环在你的阵列,并添加一个会话指数

for($x=0;$x<count($data);$x++) 
    { 
    $newArrays[$x]['session'] = $new; 
    } 
+0

我回答了这个第一:( – gbolo

0

您可以使用array_walk

试试这个

array_walk($array, function(&$a) { 
    $a['session'] = md5(uniqid($userlogin, true)); 
}); 
0

使用array_map()的foreach或array_walk到itereate并添加会话密钥。

array_map(function($v){ 
    $v['session'] = md5(uniqid($userlogin, true)); 
    return $v; 
});