我有以下这样的字符串
我需要的是关联数组格式。
abc\xyz
abc\def\ghi
我需要的是关联数组格式。
$array["abc"]["xyz"]
$array["abc"]["def"]["ghi"]
我正在使用 "\" 字符来拆分字符串。
现在,我有了每一行的数组。 从这里,我该如何动态地获得上面的关联格式?
abc\xyz
abc\def\ghi
$array["abc"]["xyz"]
$array["abc"]["def"]["ghi"]
我正在使用 "\" 字符来拆分字符串。
现在,我有了每一行的数组。 从这里,我该如何动态地获得上面的关联格式?
既然你已经澄清了你的数据是来自某个日志文件(即不直接来自文件系统,因此甚至可能是非真实目录),你可以使用这种简单的方法来获取你的数组:
$data = 'abc\xyz
abc\def\ghi
abc\xyz\pqr';
//
$data = preg_split('/[\r\n]+/', $data);
$result = [];
$pointer = &$result;
foreach($data as $path)
{
$path = explode('\\', $path);
foreach($path as $key)
{
if(!isset($pointer[$key]))
{
$pointer[$key] = null;
$pointer = &$pointer[$key];
}
}
$pointer = &$result;
}
-这将导致:
数组(3){ ["abc"]=> array(1) { ["xyz"]=> NULL } ["def"]=> array(1) { ["ghi"]=> NULL } ["xyz"]=> array(1) { ["pqr"]=> NULL } }
逐行读取日志文件:
$yourAssoc = array();
$handle = fopen("inputfile.txt", "r");
if ($handle) {
while (($line = fgets($handle)) !== false) {
// process the line read.
$arrayLine = explode('/', $line);
if (!in_array($arrayLine[0], $yourAssoc)) {
$yourAssoc[$arrayLine[0]] = 'stuff'; // you take it from here and do what you want
}
}
} else {
// error opening the file.
}
尝试以下代码:
<?php
$varStr = 'abc\def\ghi';
$arr = explode("\\", $varStr);
$outArr = array();
foreach (array_reverse($arr) as $arr)
$outArr = array($arr => $outArr);
print_r($outArr);