如何在sperate键和值中拆分数组键和值

时间:2018-04-11 08:00:53

标签: php

我正在尝试获得一个可用的数组。 这就是我从.csv文件中获取以下数组的方法。

$csv = array_map('str_getcsv', file($file));
array_walk($csv, function(&$a) use ($csv) {
    $a = array_combine($csv[0], $a);
});
array_shift($csv);

现在我有一个包含这些键和值的数组:

[0] => Array
    (
        [Label;Account;Registered;Licensed;User;UserLicense] => Test;Test;No;No;test;no;
    )

我希望得到一个类似的数组:

[0] => Array
    (
        [Label] => Test
        [Account] => Test
        [Registered] => No
        [Licensed] => No
        [User] => test
        [UsreLicense] => no
    )

任何人都可以帮助我吗? 感谢。

2 个答案:

答案 0 :(得分:0)

class arrCsv {

        private $arr;

        private function getValFromArray($item, $key) {
            $arrKeys = explode(';', $key);
            $arrVal = explode(';', $item);
            array_pop($arrVal); // remove last empty item

            $this->arr[] = array_combine($arrKeys, $arrVal);

        }

        function setNewArr($arItems) {
            array_walk_recursive($arItems, array($this, 'getValFromArray'));
        }

        function getNewArr() {
            return $this->arr;
        }

    }

    $r = new arrCsv;
    $r->setNewArr($csvArray);

    $vals = $r->getNewArr();

答案 1 :(得分:0)

我找到了答案:

$usersCsv = array();
if (($handle = fopen($file, "r")) !== FALSE) {
   while (($data = fgetcsv($handle, 1000, ";")) !== FALSE) {
  $usersCsv[] = $data;
  array_walk($usersCsv, function(&$a) use ($usersCsv) {
       $a = array_combine($usersCsv[0], $a);
      });
    }
 fclose($handle);
 array_splice($usersCsv, 0, 1);
}

感谢您的帮助!