我试图从一个文件读取并存储在一个多维数组中。我的最终数组看起来应该是这样的:
$products = [
"tshirt" => [
"color" => "red",
"designer" => "hisName",
"year" => "2000"
]
"pants" => [
"color" => "black,
"designer" => "hisName",
"year" => "2003"
]
]
我很困惑,因为我没有得到如何指定在数组中存储数据的位置。
这是我的代码:
<?php
$lignes = file('./file.txt');
$index = 0;
$indexId = 0;
foreach($lignes as $ligne){
$ligne = trim($ligne);
if($index == 0){
$id = $ligne;
$livres[$indexId] = $id;
$indexId++;
$index++;
}elseif($ligne != "+ + +"){
$livres[$id][] = $ligne;
}else{
$index = 0;
}
}
?>
这里是file.txt内容的预览:
type
color
designer
year
+ + +
type
color
designer
year
每个条目用+ + +
分隔答案 0 :(得分:1)
您的文本文件需要更多信息,除非所有信息都按特定顺序排列......不知何故,密钥必须与文本文件中的值绑定,因此我假设每个第1个元素都是类别,并且之后的元素是特定的键,如颜色等。我模仿你的文本文件到一个数组..这将发生在你的file()语句...你也可以使用switch()命令,但我试图按照你的代码尽可能接近。
<?php
$lignes = array('tshirt','red','hisName','2000','+ + +','pants','black','hisName','2003');
$index = 0;
$category = "";
$type = "";
foreach($lignes as $ligne){
$ligne = trim($ligne);
if($index == 0) { $category = $ligne; }
elseif ($index == 1) { $type = "color"; }
elseif ($index == 2) { $type = "designer"; }
elseif ($index == 3) { $type = "year"; }
elseif ($ligne == "+ + +") {
$index = -1;
$category = "";
$type = "";
}
$index++;
if ($category && $type) {
$livres[$category][$type] = $ligne;
}
}
print "<pre>";
print_r($livres);
print "</pre>";
?>
我的结果是:
Array
(
[tshirt] => Array
(
[color] => red
[designer] => hisName
[year] => 2000
)
[pants] => Array
(
[color] => black
[designer] => hisName
[year] => 2003
)
)
答案 1 :(得分:1)
假设产品,颜色,设计师和年份总是按顺序排列:
<?php
for( $i=0; $i < sizeof( $lignes ); $i++ ){
$product = $lignes[ $i++ ];
$products[ $product ][ 'color' ] = $lignes[ $i++ ];
$products[ $product ][ 'designer' ] = $lignes[ $i++ ];
$products[ $product ][ 'year' ] = $lignes[ $i++ ];
}