从CSV到多维数组(PHP)
我想从去:从CSV到多维数组(PHP)
A,A,A,A
A,A,A,B
A,A,B,A
A,A,B,B
A,B,A,A
A,B,A,B
A,B,B,A
A,B,B,B
B,A,A,A
B,A,A,B
B,A,B,A
B,A,B,B
B,B,A,A
B,B,A,B
B,B,B,A
B,B,B,B
到:
Array (
[A] => Array
(
[A] => Array
(
[A] => Array
(
[A] => A,
[B] => B
[B] => Array
(
[A] => A,
[B] => B
[B] => Array
(
[A] => Array
(
[A] => A,
[B] => B
[B] => Array
(
[A] => A,
[B] => B
[B] => Array
(
[A] => Array
(
[A] => Array
(
[A] => A,
[B] => B
[B] => Array
(
[A] => A,
[B] => B
[B] => Array
(
[A] => Array
(
[A] => A,
[B] => B
[B] => Array
(
[A] => A,
[B] => B
我也许会后悔,但我觉得很无聊。假设你有一个CSV文件,如果没有的话只是explode()
上\n
CSV字符串或什么:
$lines = file('/path/to/csv.txt');
$array = array();
foreach($lines as $line) {
$temp = &$array;
$path = str_getcsv($line);
$value = array_pop($path);
foreach($path as $key) {
$temp =& $temp[$key];
}
$temp[$value] = $value;
}
print_r($array);
*我可能会后悔*那么你为什么发布它? – Rizier123
有机会,我不会;-)最坏的情况下,我删除它。 – AbraCadaver
也有一个变化,有些人并不真正看到你在那里做什么,所以你可能想解释一下,你的答案中不包含'array_column':P – Rizier123
您可以将字符串通过分裂在换行转换成排的阵列。
然后遍历行并在逗号分隔。您想要的多维数组将通过使用CSV行中的每个值作为结果中较低级别的关键字来实现。
foreach (explode("\n", $csv_str) as $row) {
$row = explode(',', $row);
$result[$row[0]][$row[1]][$row[2]][$row[3]] = $row[3];
}
不错,如果CSV总是已知列数,在这种情况下4. – AbraCadaver
谢谢!那么,对于超过四列的CSV,它仍然会工作,它会忽略其余部分。但是,只有不到四个人会成为nokay。 –
那么这种转变背后的逻辑是什么? –
是的,我刚刚注意到第一位中的A的数量与数组不匹配。也可以使用代码格式来使该数组更容易阅读。 –
你应该提供一个这个数组是如何构建的,然后提供显示你所尝试的代码。 – nerdlyist